关于finish()结束活动

最近写《即时新闻》的时候,为了方便调试,在登录界面加了个离线登录按钮,然后在我的侧滑栏中有个退出按钮。发现在线登录后点击退出按钮可以完全退出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里面的方法就行啦。


猜你喜欢

转载自blog.csdn.net/Jay_zjc/article/details/80788663
今日推荐