Activity小技巧

获取当前活动的Activity

可以新建一个BaseActivity继承自Activity,然后在BaseActivity中重写onCreate方法

示例代码

public class BaseActivity extends Activity{
    @Override
    protected void onCreate(Bundle saveInstanceState){
        Log.d("BaseActivity",getClass().getSimpleName());
    }
}

接下来我们让BaseActivity成为所有Acitivty的基类,这样其他Activity既有Activity的特性,在进入Activity的时候,也可以打印Log表明身份

随时随地退出程序

如果目前你的手机界面还停留在ThirdActivity,你会发现当前像退出程序是非常不方便的,需要连按三次Back键盘才行,按Home键只是挂起程序,并没有退出。

其实解决思路非常简单,只需要一个专门的集合类对所有的Activity进行管理就可以了

新建一个ActivityCollector类作为活动管理器:

public class ActivityCollector{
    public static List<Activity> activities = new ArrayList<Activity>();

    public static void addActivity(Activity activity){
        activities.add(activity);
    }

    public static void removeActivity(Activity activity){
        activies.remove(activity);
    }

    public static finishAll(){
        for(Activity activity : activities){
            if(!activity.isFinishing()){
                activity.finish();
            }
        }
    }
}   

在活动管理器中,我们通过一个List来暂存Activity,然后提供一个addActivity()方法用于向List中添加一个活动,提供了一个removeActivity()方法用于从List中移除活动,最后提供了一个finishAll()方法用于将List中存储的Activity全部销毁。

接下来修改BaseActivity中的代码:

public class BaseActivity extends Activity{
    @Override
    protected void onCreate(Bundle saveInstanceState){
        Log.d("BaseActivity",getClass().getSimpleName());
        ActivityCollector.addActivity(this);
    }

    @Override
    proected void onDestroy(){
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}

这样,不管在任何地方退出程序,只需要调用ActivityCollector的finishAll方法即可。

Copyright© 2020-2022 li-xyz 冀ICP备2022001112号-1