做過Android開發的人都知道,應用程序點擊返回鍵 或者 代碼顯示調用了Activity.finish()方法都無法完全退出,通過任務管理工具可以看到他們還在進程中。
下面我將分享 OSChina.NET Android版客戶端 完全退出程序的方法:
1. 添加權限
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
2. 導入AppManager工具類 AppManager類是一個自定義的工具類,作用是將應用程序所有启動的Activity都添加到堆棧,最終退出應用程序時全部釋放掉Activity。 完整的AppManager類代碼:
package net.oschina.app; import java.util.Stack; import android.app.Activity; import android.app.ActivityManager; import android.content.Context; /** * 應用程序Activity管理類 * @author liux */ 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 ); |
From:CSDN
全站熱搜
留言列表