1. 程式人生 > >android退出程式的幾種方法

android退出程式的幾種方法

    因為發現光呼叫finish()方法後 程式中所啟動的執行緒依舊在後臺執行——Android的特點之一——否則也不會出現諸多用於關閉程序的工具。搜尋了相關資料,大致有以下幾種方法可以用於完全關閉程序的方式。其中第一種方法作者已經用過,的確是可行的。

    第一種方法:

1 android.os.Process.killProcess(android.os.Process.myPid());

    第二種方法:在onDestroy函式中加入程式碼

1 System.exit(0);
1

    第三種方法:

1 2 ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); manager.killBackgroundProcesses(package);
1

      第四種方法:

1 manager.restartPackage(package);
1

    第五種方法:

1 2 3 4 Intent MyIntent = new Intent(Intent.ACTION_MAIN);
MyIntent.addCategory(Intent.CATEGORY_HOME); startActivity(MyIntent); finish();

    這個方法好像只是退回到桌面…

    第六種方法:使用廣播機制

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 public abstract class EnterActivity extends BaseActivity { 
...  // 寫一個廣播的內部類,當收到動作時,結束activity  private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {  @Override  public void onReceive(Context context, Intent intent) {  close();  unregisterReceiver(this); // 這句話必須要寫要不會報錯,不寫雖然能關閉,會報一堆錯  };  @Override  public void onResume() {  super.onResume();  // 在當前的activity中註冊廣播  IntentFilter filter = new IntentFilter();  filter.addAction(Attribute.PAGENAME);  registerReceiver(this.broadcastReceiver, filter); // 註冊  /** * 關閉 */  public void close() {  Intent intent = new Intent();  intent.setAction(Attribute.PAGENAME); // 說明動作  sendBroadcast(intent);// 該函式用於傳送廣播  finish();  ...  }

    請注意,這段程式碼中缺少了登出程式碼,(unregisterReceiver)這個是必須要加的。

參考來源: