Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android退出程序的方法

Android退出程序的方法

編輯:Android開發教程

如果退出當前運行的Activity,可以使用 this.finish() 或者 System.exit(0) 。

如果退出整個 程序,如下操作:

方式一:

Intent intent=new Intent(Intent.ACTION_MAIN);  
      
intent.addCategory(Intent.CATEGORY_HOME);  
      
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
      
this.startActivity(intent);  
      
System.exit(0);

方式二:

android.os.Process.killProcess

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

android 完全退出 程序

有幾個activity,有一需求是在一個activityA點擊back鍵退出系統而不是跳到之前的 activity

首先想到的是清空activityA的堆棧,使用intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); 但是該activityA不是已經存在於堆棧底端的,所以清除的只是堆棧中 該activityA上面的activity,但後退後還是會返回堆棧中該activityA下面的activity。

然後想到的 是截獲back按鍵的事件,使用System.exit(0)和android.os.Process.killProcess (android.os.Process.myPid())來退出程序,還是不行,當前的activityA是被干掉了,但是還是會被 ActivityManager接管返回到前一個activity。而且如果之前activity需要一些傳過來的參數的話會導致程序 連續拋異常。

最後終於找到一個可行的方法:使用ActivityManager徹底退出程序

ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
manager.restartPackage(getPackageName());

需要聲明權限<uses-permission android:name="android.permission.RESTART_PACKAGES"/>

這種方法會終止一切和這個 程序包關聯的,所有共享同一uid的process被kill,所有的activity會被removed

所有創建的服務會停 止,還會發一個廣播 Intent.ACTION_PACKAGE_RESTARTED 導致所有注冊alarms被stopped, notifications 被 removed。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved