当有多个activity时,随时随地退出当前程序
当有3个activity时,在第三个activity想退出程序,那么就要按back键3次才能退出,那么怎么直接退出呢。
1、创建一个专门的集合类来管理所有活动
packagecom.yuanlp.taskstack;importandroid.app.Activity;importjava.util.ArrayList;importjava.util.List;/***Createdby原立鹏on2017/6/27.*/publicclassActivityCollector{publicstaticList<Activity>activityList=newArrayList<Activity>();publicstaticvoidaddActivity(Activityactivity){activityList.add(activity);}publicstaticvoidremoveActivity(Activityactivity){activityList.remove(activity);}publicstaticvoidfinshiAll(){for(Activityactivity:activityList){if(!activity.isFinishing()){//判断当前activity是否被干掉了activity.finish();}}activityList.clear();}}
2、创建一个java的类,BaseActivity,继承AppCompatActivity。为什么不直接写成activity呢,因为我们不需要讲BaseActivity在Manifext.xml里注册。
packagecom.yuanlp.taskstack;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.util.Log;/***Createdby原立鹏on2017/6/27.*/publicclassBaseActivityextendsAppCompatActivity{privatestaticfinalStringTAG="BaseActivity";@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);Log.d(TAG,getClass().getSimpleName());//获取当前活动的名称ActivityCollector.addActivity(this);//调用自己写的activity的集合类,把当前activity加入到list中}protectedvoidonDestroy(){super.onDestroy();ActivityCollector.removeActivity(this);//每当当前activity销毁时,去除当前activity}}
3、让3个activity都继承BaseActivity,这样之前写的三个activity也不会报错。
packagecom.yuanlp.taskstack;importandroid.content.Intent;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;publicclassMainActivityextendsBaseActivity{privatestaticfinalStringTAG="MainActivity";@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);Log.d(TAG,"Taskidis:"+getTaskId());//输出当前返回栈的IDsetContentView(R.layout.activity_main);}@OverrideprotectedvoidonStart(){super.onStart();Log.d(TAG,"onStart:");}@OverrideprotectedvoidonResume(){super.onResume();Log.d(TAG,"onResume:");}@OverrideprotectedvoidonPause(){super.onPause();Log.d(TAG,"onPause:");}@OverrideprotectedvoidonStop(){super.onStop();Log.d(TAG,"onStop:");}@OverrideprotectedvoidonRestart(){super.onRestart();Log.d(TAG,"onRestart:");}@OverrideprotectedvoidonDestroy(){super.onDestroy();Log.d(TAG,"onDestroy:");}publicvoidopen1(Viewview){Intentintent=newIntent(this,MainActivity.class);startActivity(intent);}publicvoidopen2(Viewview){Intentintent=newIntent(this,SecondActivity.class);startActivity(intent);}}
4、在第三个activity中加入一个按钮,点击后退出程序。
packagecom.yuanlp.taskstack;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;publicclassThirdActivityextendsBaseActivity{privatestaticfinalStringTAG="ThirdActivity";@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);Log.d(TAG,"Taskidis"+getTaskId());setContentView(R.layout.activity_third);}publicvoidexitApp(Viewview){ActivityCollector.finshiAll();//退出android.os.Process.killProcess(android.os.Process.myPid());//杀死当前进程}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。