为了降低用户误操作退出程序的概率,很多应用都会采用“再按一次退出程序”的方式来处理。实现原理下图所示:
实现方式如下:
private long exitTime = 0;
@Override
public void onBackPressed() {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
System.exit(0);
}
}
退出程序的实现
public class MyApplication extends Application{
public Context appContext = null;
private List<Activity> mList = new LinkedList();
private static MyApplication instance;
public MyApplication() {
}
@Override
public void onCreate() {
super.onCreate();
appContext = getApplicationContext();
}
public synchronized static MyApplication getInstance() {
if (null == instance) {
instance = new MyApplication();
}
return instance;
}
public void addActivity(Activity activity) {
mList.add(activity);
}
public void exit() {
try {
for (Activity activity : mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
创建一个BaseActivity,所有的Activity都继承自自BaseActivity
public class BaseActivity extends Activity {
private BaseActivity oContext;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
oContext = this;// 把当前的上下文对象赋值给BaseActivity
MyApplication.getInstance().addActivity(this);
}
}
在需要退出程序的地方调用,即可退出程序
MyApplication.getInstance().exit();