使用Application退出 :目前比较常用方法之一,我们都知道application是Android的系统组件,当应用程序启动时,会自动帮我们创建一个Application,而且一个应用程序只能存在一个Application,它的生命周期也是最长的,如果需要使用自己创建的Application时,这个时候我们只需要在Androidmanifest.xml中的<Application> 标签中添加name属性:把创建的Application完整的包名+类名放进了就行了。
import android.app.Activity; import android.app.Application; import java.util.ArrayList; import java.util.List; public class myApplication extends Application { private List<Activity> oList;//用于存放所有启动的Activity的集合 public void onCreate() { super.onCreate(); oList = new ArrayList<Activity>(); } /** * 添加Activity */ public void addActivity_(Activity activity) { // 判断当前集合中不存在该Activity if (!oList.contains(activity)) { oList.add(activity);//把当前Activity添加到集合中 } } /** * 销毁单个Activity */ public void removeActivity_(Activity activity) { //判断当前集合中存在该Activity if (oList.contains(activity)) { oList.remove(activity);//从集合中移除 activity.finish();//销毁当前Activity } } /** * 销毁所有的Activity */ public void removeALLActivity_() { //通过循环,把集合中的所有Activity销毁 for (Activity activity : oList) { activity.finish(); } } }
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; public class BaseActivity extends AppCompatActivity { private myApplication application; private BaseActivity oContext; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (application == null) { // 得到Application对象 application = (myApplication) getApplication(); } oContext = this;// 把当前的上下文对象赋值给BaseActivity addActivity();// 调用添加方法 } // 添加Activity方法 public void addActivity() { application.addActivity_(oContext);// 调用myApplication的添加Activity方法 } //销毁当个Activity方法 public void removeActivity() { application.removeActivity_(oContext);// 调用myApplication的销毁单个Activity方法 } //销毁所有Activity方法 public void removeALLActivity() { application.removeALLActivity_();// 调用myApplication的销毁所有Activity方法 } }
<MainActivity 继承 BaseActivity 主界面---双击返回键,退出当前应用程序>
public class MainActivity extends BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//绑定按钮
public void button(View v) {
startActivity(new Intent(MainActivity.this, oneActivity.class));//跳转到oneActivity
}
//重写onKeyDown方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
//判断当点击的是返回键
if (keyCode == event.KEYCODE_BACK) {
exit();//退出方法
}
return true;
}
private long time = 0;
//退出方法
private void exit() {
//如果在两秒大于2秒
if (System.currentTimeMillis() - time > 2000) {
//获得当前的时间
time = System.currentTimeMillis();
showToast("再点击一次退出应用程序");
} else {
//点击在两秒以内
removeALLActivity();//执行移除所以Activity方法
}
}
}
< androidmanifest.xml 清单文件>
<application
android:name="com.jxsw.chong.application_closeactivity.myApplication" //注册myapplication
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.jxsw.chong.application_closeactivity.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.jxsw.chong.application_closeactivity.BaseActivity" />
</application>
我们让每个Activity都继承于我们自己定义的BaseActivity,每次新开启个Activity,就会在BaseActivity的oncreate()方法中就会执行addActivity()方法,方法里面执行的是myApplication类中添加Activity的方法,把当前的Activity放进集合中,当连续点击两次back返回键,执行销毁所有Activity的方法。从而达到完全退出应用程序的效果。
ps:一定不要忘记在androidmanifest.xml中注册myApplication