Android开发实用技巧之四:自定义ActivityCollector来管理活动

来源:互联网 发布:java websocket多线程 编辑:程序博客网 时间:2024/05/14 06:52

一:判断当前活动是哪一个活动类

当程序较复杂时,有时会出现找不到当前界面对应的是哪个活动的情况,那么通过以下办法我们可以随时知道当前活动的界面对应的是哪一个活动类。


1.自定义一个BaseActivity如下:

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

2.然后接下来创建的所有活动都继承BaseActivity,而不是继承Activity。这样当我们进入到一个活动的界面,就可以在LogCat中找到该活动的类名了。


二:管理当前活动的个数及随时随地的退出程序


1.新建一个活动管理类ActivityCollector如下:

public class ActivityCollector {        //定义一个List用来暂存活动    public static List<Activity> activities = new ArrayList<Activity>();        //向List中添加一个活动    public static void addActivity(Activity activity){        activities.add(activity);    }    //向List中移除一个活动    public static void removeActivity(Activity activity) {        activities.remove(activity);    }        //用循环销毁List中的所有活动    public static void finishAll(){        for (Activity activity: activities){            if (!activity.isFinishing()){                activity.finish();            }        }    }}

2.自定义一个BaseActivity如下:


public class BaseActivity extends Activity{    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Log.d("BaseActivity", getClass().getSimpleName());        //把当前活动添加到List中        ActivityCollector.addActivity(this);    }    @Override    protected void onDestroy() {        super.onDestroy();        //把当前活动从List中移除        ActivityCollector.removeActivity(this);    }}

3.通过步骤1,2之后,以后不管想在任何地方退出程序,不再需要连续按Back键了,只需调用ActivityCollector.finishAll()就可以了,比如实现一个退出程序的按钮


Button logoutbutton = (Button) findViewById(R.id.logout);        logoutbutton.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                ActivityCollector.finishAll();            }        });

这样,当点击按钮时就可以退出程序了。



0 0