最近写《即时新闻》的时候,为了方便调试,在登录界面加了个离线登录按钮,然后在我的侧滑栏中有个退出按钮。发现在线登录后点击退出按钮可以完全退出app,并且杀掉线程。可是离线登录后点击退出按钮,还是回到了登录界面,找了好久,终于发现,原来是在离线登录跳转后没有用finish()方法结束掉登录界面,找出来的瞬间感觉真的是太简单的一个问题了,自己都觉得尴尬,可就是这么简单的一个问题也困扰了我快一周吧,所以一定要细心呀!
顺便记录一个知识点,关于结束app内所有活动的方法。
首先新建一个ActivityController类:
public class ActivityController extends AppCompatActivity { private static List<Activity> activityList = new ArrayList<>(); public static void addActivity(Activity activity) { activityList.add(activity); } public static void removeActivity(Activity activity) { activityList.remove(activity); } public static void finishAll() { activityList.removeAll(activityList); for (Activity activity:activityList) { activity.finish(); } activityList.clear(); } }
可以看到,这里我们可以看到,有对activity的增加、单个结束和结束全部的方法。
然后:新建基类活动BaseActivity继承于AppCompatActivity
public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("BaseActivity", getClass().getSimpleName()+"启动"); ActivityController.addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); Log.d("BaseActivity", "活动销毁:"+getClass().getSimpleName()); ActivityController.removeActivity(this); } }
最后,我们只需要让自己的每一个activity都继承于BaseActivity,然后调用activityController里面的方法就行啦。