1。新建一个ActivityCollector类作为活动的管理器
package com.example.alan.activitytest;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Alan on 2017/2/26.
*/
public class ActivityCollector {
public static List<Activity> activities = new ArrayList();
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();
}
}
}
}
2.
ActivityCollector通过List管理暂存的活动,通过addActivity()方法将活动添加到List当中,通过removeActivity()将活动从LIst中移除 ,finishAll()将List中存储的活动全部销毁
package com.example.alan.activitytest; import android.util.Log; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; /** * Created by Alan on 2017/2/26. */ public class BaseActivity extends AppCompatActivity { @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); android.os.Process.killProcess(android.os.Process.myPid()); } }
3.
当想在某个活动中通过点击退出程序时,在相应的活动代码中添加如下
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("ThirdActivity","Task id is " +getTaskId() ); setContentView(R.layout.third_layout); Button button3 = (Button)findViewById(R.id.button_3); //button3表示退出程序按钮 button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) //点击发生相应 { ActivityCollector.finishAll(); //调用活动管理器中的finishAll()方法退出程序 } });
书中提到可以在销毁所有活动的代码的后米娜添加杀掉当前进程的代码 如下:
android.os.Process.killProcess(android.os.Process.myPid());
将其添加到基类中的onDestroy()方法下面
与finish()方法的区别是:一个是系统文明执法按顺序执行一个是强拆