这次用到了这个功能,上次想要实现但是一直没有实现,主要是使用finish()和system.exit(0)系统都会当做是强制终止,就会重启这个进程。于是从网上找了一段代码用起来很好用。所以存档一下啦~
先是退出进程的
用法就是在每个activity的oncreate方法中SysApplication.getInstance().addActivity(this)
之后在需要退出的地方调用SysApplication.getInstance().exit()方法即可退出
package com.who;
import java.util.LinkedList;
import java.util.List;
import android.app.Activity;
import android.app.Application;
public class SysApplication extends Application {
private List<Activity> mList = new LinkedList<Activity>();
private static SysApplication instance;
private SysApplication() {
}
public synchronized static SysApplication getInstance() {
if (null == instance) {
instance = new SysApplication();
}
return instance;
}
// add Activity
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();
}
}
然后是双击返回键退出的
private long exitTime=0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
public void exit() {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
SysApplication.getInstance().exit();
}
}
嗯,真的灰常好用╮(╯▽╰)╭