正常关闭
应用程序:
当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用:
第一种方法:首先获取当前进程的id,然后杀死该进程。
android.os.Process.killProcess(android.os.Process.myPid())
通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空
第二种方法:终止当前正在运行的Java虚拟机,导致程序终止
System.exit(0);
不会把自己的应用程序杀死
第三种方法:强制关闭与该包有关联的一切执行
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
manager.restartPackage(getPackageName());
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用:
第一种方法:首先获取当前进程的id,然后杀死该进程。
android.os.Process.killProcess(android.os.Process.myPid())
通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空
第二种方法:终止当前正在运行的Java虚拟机,导致程序终止
System.exit(0);
不会把自己的应用程序杀死
第三种方法:强制关闭与该包有关联的一切执行
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
manager.restartPackage(getPackageName());
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
但是这样只能杀死别人,不能杀死自己
还有一种一般企业开发使用的是:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
MyApp myApp = (MyApp) getApplication();
myApp.activies.add(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
MyApp myApp = (MyApp) getApplication();
myApp.activies.remove(this);
}
public void click1(View view){
Intent intent = new Intent(this,Activity01.class);
startActivity(intent);
}
public void click2(View view){
Intent intent = new Intent(this,Activity02.class);
startActivity(intent);
}
public void exit(View view){
MyApp myApp = (MyApp) getApplication();
for(Activity ac : myApp.activies){
ac.finish();
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
MyApp myApp = (MyApp) getApplication();
myApp.activies.add(this);
}
public void click1(View view) {
Intent intent = new Intent(this, Activity01.class);
startActivity(intent);
}
public void click2(View view) {
Intent intent = new Intent(this, Activity02.class);
startActivity(intent);
}
public void exit(View view) {
MyApp myApp = (MyApp) getApplication();
for (Activity ac : myApp.activies) {
ac.finish();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
MyApp myApp = (MyApp) getApplication();
myApp.activies.remove(this);
}
public class MyApp extends Application { //存放当前应用程序里面打开的所有的activity public List activies; @Override public void onCreate() { activies = new ArrayList(); super.onCreate(); } }