本篇博文最后修改时间:2016年5月25日,16:33。
一、简介
本篇介绍如何随时随地退出程序。
二、实验平台
系统版本:Windows7 家庭普通版 32位操作系统。
三、版权声明
博主:思跡
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/omoiato
联系方式:315878825@qq.com
Java零基础入门交流群:541462902
四、如何随时随地退出程序
如果目前我们手机的界面还停留在ThirdActivity,想退出程序是非常不方便的,
需要连按三次Back 键才行。按Home 键只是把程序挂起,并没有退出程序。
如果我们的程序需要一个注销或者退出的功能该怎么办呢?
必须要有一个随时随地都能退出程序的方案才行。
其实解决思路也很简单,只需要用一个专门的集合类对所有的活动进行管理就可以了,
下面我们就来实现一下。
1、新建一个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)
{
activities.remove(activity);
}
public static void finishAll()
{
for (Activity activity : activities)
{
if (!activity.isFinishing())
{
activity.finish();
}
}
}
}
在活动管理器中,我们通过一个List 来暂存活动,
然后提供了一个addActivity()方法用于向List 中添加一个活动,
提供了一个removeActivity()方法用于从List 中移除活动,
最后提供了一个finishAll()方法用于将List 中存储的活动全部都销毁掉。
2、修改BaseActivity 中的代码
public class BaseActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy()
{
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
在BaseActivity 的onCreate()方法中调用了ActivityCollector 的addActivity()方法,
表明将当前正在创建的活动添加到活动管理器里。
然后在BaseActivity 中重写onDestroy()方法,并调用了ActivityCollector 的removeActivity()方法,
表明将一个马上要销毁的活动从活动管理器里移除。
ActivityCollector.finishAll()方法
从此以后,不管我们想在什么地方退出程序,只需要调用ActivityCollector.finishAll()方法就可以了。
例如在ThirdActivity 界面想通过点击按钮直接退出程序,只需将代码改成如下所示:
public class ThirdActivity extends BaseActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Log.d("ThirdActivity", "Task id is " + getTaskId());
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.third_layout);
Button button3 = (Button) findViewById(R.id.button_3);
button3.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
ActivityCollector.finishAll();
}
});
}
}
当然我们还可以在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证程序完全退出。