方法一:
代码如下:
int currentVersion = android.os.Build.VERSION.SDK_INT;
if (currentVersion > android.os.Build.VERSION_CODES.ECLAIR_MR1) {
// Android2.1以上
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
System.exit(0);
} else {
// Android2.1及以下
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
}
方法二:
注册广播,接收到消息后退出app
① 编写退出的广播
import android.app.Activity;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.FragmentActivity;
/**
* Created by X on 2016/8/29.
*/
public class ExitAppReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (context != null) {
if (context instanceof Activity) {
//退出Activity
((Activity) context).finish();
} else if (context instanceof FragmentActivity) {
//退出FragmentActivity
((FragmentActivity) context).finish();
} else if (context instanceof Service) {
//退出Service
((Service) context).stopSelf();
}
}
}
}
② 编写所有Activity的基类
import android.app.Activity;
import android.content.IntentFilter;
import android.os.Bundle;
/**
* Created by X on 2016/8/29.
*/
public class BaseActivity extends Activity {
private ExitAppReceiver exitReceiver = new ExitAppReceiver();
//自定义退出应用Action,实际应用中应该放到整个应用的Constant类中.
protected static final String EXIT_APP_ACTION = "com.qyx.exit_app";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
registerExitReceiver();
}
private void registerExitReceiver() {
IntentFilter exitFilter = new IntentFilter();
exitFilter.addAction(EXIT_APP_ACTION);
registerReceiver(exitReceiver, exitFilter);
}
private void unRegisterExitReceiver() {
unregisterReceiver(exitReceiver);
}
@Override
protected void onDestroy() {
super.onDestroy();
unRegisterExitReceiver();
}
}
③ 发送广播,结束app
Intent intent = new Intent();
intent.setAction(EXIT_APP_ACTION);
sendBroadcast(intent);