您好,登錄后才能下訂單哦!
做過Android開發的人都知道,應用程序點擊返回鍵或者代碼調用了Activity.finish()方法都無法完全退出,通過任務管理工具可以看到他們還在進程中。那我們應該如何完全退出應用程序呢?
下面將給大家分享,Android客戶端如何完全退出應用程序的方法:
1.添加權限
<uses-permission android:name=”android.permission.RESTART_PACKAGES”/>
2.導入AppManager工具類
AppManager類是一個自定義的工具類,作用是將應用程序所有啟動的Activity都添加到堆棧,最終退出應用程序時全部釋放掉Activity。
AppManager類完整代碼:
package com.sunny.aa; import java.util.Stack; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; /** * 應用程序Activity管理類 */ public class AppManager { private static Stack<Activity> activityStack; private static AppManager instance; private AppManager() { } /** * 單例 */ public static AppManager getAppManager() { if (instance == null) { instance = new AppManager(); } return instance; } /** * 添加Activity到堆棧 */ public void addActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.add(activity); } /** * 獲取當前Activity(堆棧中最后一個壓入的) */ public Activity currentActivity() { Activity activity = activityStack.lastElement(); return activity; } /** * 結束當前Activity(堆棧中最后一個壓入的) */ public void finishActivity() { Activity activity = activityStack.lastElement(); if (activity != null) { activity.finish(); activity = null; } } /** * 結束指定的Activity */ public void finishActivity(Activity activity) { if (activity != null) { activityStack.remove(activity); activity.finish(); activity = null; } } /** * 結束指定類名的Activity */ public void finishActivity(Class<?> cls) { for (Activity activity : activityStack) { if (activity.getClass().equals(cls)) { finishActivity(activity); } } } /** * 結束所有Activity */ public void finishAllActivity() { for (int i = 0, size = activityStack.size(); i < size; i++) { if (null != activityStack.get(i)) { activityStack.get(i).finish(); } } activityStack.clear(); } /** * 退出應用程序 */ public void AppExit(Context context) { try { finishAllActivity(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.restartPackage(context.getPackageName()); System.exit(0); } catch (Exception e) { } } }
3.使用AppManager工具類
Activity啟動時,在的onCreate方法里面,將該Activity實例添加到AppManager的堆棧。
AppManager.getAppManager().addActivity(this);
需要退出程序時調用
AppManager.getAppManager().AppExit(this);
經過以上幾步操作,即可完全退出程序退出所有Activity,歡迎大家一起交流學習~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。