BaseActivity.java
package com.example.buish.exitdemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; public class BaseActivity extends AppCompatActivity { private Toast toast; private MyApplication myApplication; private long lastPressedTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); myApplication = (MyApplication) getApplication(); myApplication.addActivity(this); } @Override public void onBackPressed() { long currentPressedTime = System.currentTimeMillis(); if (currentPressedTime - lastPressedTime > 3000) { if (toast == null) toast = Toast.makeText(this, "再次点击返回键退出应用", Toast.LENGTH_SHORT); toast.show(); lastPressedTime = currentPressedTime; } else { toast.cancel(); myApplication.finish(); } } }
MyApplication.java
package com.example.buish.exitdemo; import android.app.Application; import android.support.v7.app.AppCompatActivity; import java.util.ArrayList; public class MyApplication extends Application { private ArrayList<AppCompatActivity> activities = new ArrayList<>(); public void addActivity(AppCompatActivity activity) { activities.add(activity); } public void finish() { for (int i = 0; i < activities.size(); ++i) { activities.get(i).finish(); } } }
AndroidManifest.xml
... <application android:name=".MyApplication" ... </application> ...