1. 程式人生 > >activity管理器一次退出所有activity

activity管理器一次退出所有activity

建立一個自己專案的Activity管理類(方法一 二均可用)記得點贊哦!謝謝
方法一
public class ActivityManager { private static Stack<Activity> activityStack; private static ActivityManager instance; private ActivityManager() { } public static ActivityManager getScreenManager() { if (instance == null) { instance
= new ActivityManager(); } return instance; }
   /**
    * 獲取當前Activity個數
    */
public int getActivitySize() { if (activityStack != null && !activityStack.empty()) { return activityStack.size(); } return 0; } /** * 退出棧頂Activity */public void popActivity(Activity activity) { if
(activity != null) { activity.finish(); activityStack.remove(activity); activity = null; } } /** * 獲得當前棧頂Activity 先進後出原則 */public Activity currentActivity() { Activity activity = null; if (activityStack != null && !activityStack.empty()) activity = activityStack
.lastElement(); return activity; } /** * 將當前Activity壓入棧中 */public void pushActivity(Activity activity) { if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.add(activity); } /** * 退出棧中class上面的所有Activity。 */public void popAllActivityExceptOne(Class cls) { while (true) { Activity activity = currentActivity(); if (activity == null) { break; } if (activity.getClass().equals(cls)) { break; } popActivity(activity); } } /** * 退出棧中除了包名外的所有Activity, */public void popAllActivityExceptPackageName(String packageName) { for (Activity activity : activityStack) { if (activity != null) { String name = activity.getComponentName().getPackageName(); if (!name.contains(packageName)) { popActivity(activity); } } } } /** * 退出棧中所有Activity */public void popAllActivity() { while (true) { Activity activity = currentActivity(); if (activity == null) { break; } popActivity(activity); } }}

方法二
或者用簡單的方法實現(清晰易懂操作)
public class ActivitysManager {private static List<Activity> activityList;
    private static ActivitysManager instance;

    private ActivitysManager() {
    }

    public static ActivitysManager getActivitysManagerInstance() {
        if (instance == null) {
            instance = new ActivitysManager();
        }
        return instance;
    }

    //退出棧頂Activity
public void popActivity(Activity activity) {
        if (activity != null) {activityList.remove(activity);
            activity = null;
        }
    }    //將當前Activity壓入棧中
public void pushActivity(Activity activity) {
        if (activityList == null) {
            activityList = new LinkedList<Activity>();
        }
        activityList.add(activity);
    }

    //退出棧中所有Activity
public void exitApp(){
        for(Activity activity:activityList){
            if(!activity.isFinishing()){
                activity.finish();
            }
        }
        int id=android.os.Process.myPid();
        if(id!=0){
            android.os.Process.killProcess(id);
        }
    }}


相關推薦

activity管理退出所有activity

建立一個自己專案的Activity管理類(方法一 二均可用)記得點贊哦!謝謝 方法一public class ActivityManager { private static Stack<Activity> activityStack; private

Android--鍵銷燬所有Activity,回到登入介面

使用使用ActivityManager這個類,在每個Activity 的OnCreate方法呼叫的時候,加進去: public class ActivityManager { private

android Activity管理

/** * @ClassName: ActivityTaskManager * @Description: TODO(Activity管理器) * @author lhn * @date 2016-4-15 上午10:34:10 */ public class ActivityTaskManager

如何銷燬Activity,和如何銷燬多個activity

public class ActivityCollector { public static List<Activity> activities = new ArrayList<Activity>(); public static void addActivity(

android 完全退出app,退出所有activity

/** * 所有activity的基類 * **/ public abstract class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanc

Eclipse4.7使用基礎 刪除所有的斷點

deb http bug .cn 所有 刪除 debug 界面 eclipse os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) 好多的斷點

Android中點擊物理返回按鍵(再按退出程序)

mil ket cati action androi 物理 show contex pri private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {

android 再按退出應用 出現閃屏 重啟

今天測試出來一個bug 再按一次 出現閃屏 重啟   @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEY

React Native實現再按退出應用程式功能

解決點選兩次手機back鍵退出程式 程式碼及註釋如下: //雙擊返回鍵退出程式

雙擊退出(再按退出)應用

# 簡介 在開發中經常需要的一個需求就是退出應用程式,那麼現在一般就是兩種情況,一、主要是點選返回鍵,彈出提示框,是否退出應用,如:UC瀏覽器,獵豹瀏覽器等,二、主要是在一定的時間間隔之內雙擊,便可退出應用。一般主要寫在BaseActivity(父類)裡面   我們今天主

個數組中只有兩個數字是出現別的所有數字都出現了兩找出這兩個數字

int main() { int arr[] = { 1, 3, 8, 1, 3, 8, 4, 6 }; int sz = sizeof(arr) / sizeof(arr[0]); int num = 0; int pos = 0; int i =

webapp開發 點選返回鍵退出問題

mui進行手機物理鍵的監聽 首先安裝 vue-awesome-mui npm i vue-awesome-mui 在main.js註冊 import Mui from ‘vue-awesome-mui’; Vue.use(Mui); mui.init({ k

python去掉所有標點符號

既然是一次性去掉所有的標點符號,那當然是用正則表示式啦: import re punctuation = '!,;:?"\'' def removePunctuation(text): text = re.sub(r'[{}]+'.format(punctuation),'',tex

spring定時,定時執行兩的問題

今天在做一個專案的時候用到了Spring的定時計劃任務。這是Spring的特色功能,可以根據設定在特定的時間或間隔時間做特定的事。 下面給出一個例子: package net.csdn.blog.chaijunkukn;   import

頻繁切換fragment報空的問題----fragment的切換-----再按退出程式

頻繁切換fragment時getActivity()會報空  還有長時間未進入app的時候fragment會報空第一種方法: 在Fagment里加如下程式碼: private Context con

apicloud keyback 事件 退出app事件 再點退出app事件

//退出APP function exitNowApp(){ $api.setStorage('isFullScreen',0); //按兩次退出應用 api.addEv

android Activity右滑返回,退出當前activity

發現目前很多app應用,都具有左滑返回的功能,而且感覺體驗很是愉快,尤其酷狗音樂左滑返回的實現,更是炫酷。今天就學習一下具體實現。 先看一下效果圖吧: 開發前準備,有兩種方案: 1:新增庫檔案,點選下載(推薦用這種) 2:新增依賴 compile ‘

解決XRecyclerView動態切換佈局管理呼叫setAdapter崩潰

在做到類似於淘寶的商品列表介面時,要動態切換佈局管理器。由於之前使用原生RecyclerView加XRefreshView巢狀在DrawableLayout裡,結果XRefreshView上拉加載出了問題,所以只能換XRefreshView來做,剛開始一切都好,就在提交程式

再按退出應用

1、keyCode:按鍵編碼 2、event:觸發事件 private long lastTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyC

微信公眾號WebApp接管返回鍵實現“再按退出程式”功能

  按微信產品部副總經理張穎“每一個公眾號都是一個APP”的說法,我們確實可以利用微信內建瀏覽器訪問為公眾號設計WebApp單頁應用,以使得客戶在訪問公眾號時有近似原生App的體驗,不過目前這樣的公眾號很少,原因除了使用javascript開發單頁應用的難度比開發一般的We