天天看點

利用Application管理Activity任務棧

業務邏輯複雜,突發奇想,記錄一種管理 Activity任務棧的方式

..

從哪裡來,就回到哪裡去的業務需求

A1→B1→C→D; D回到 A1

A2→B2→C→D; D回到 A2

這種類似的業務邏輯,很多很多,每次做起來,都比較氣死寶寶。。廢話不多,直接上代碼,有優化建議的,直接告訴我,謝謝

...

記錄 一個 bug

目前頁面 是 RechargeActivity 從 BuyActivity 直接到 RechargeActivity, 不可以利用Application管理事件,

手機的back finish 功能會帶給 BuyActivity,導緻 BuyActivity 也 跟着 finish

清除 activityName 之上 的 所有Activity, activityName 保留狀态

<pre>

//以下代碼,寫在Application

private static List<Activity> listActivity;

public static App qianGuanApp;

@Override
public void onCreate() {
    super.onCreate();
    qianGuanApp = this;
    listActivity = new ArrayList<Activity>();
}
public static App getQgApp(){
        return qianGuanApp;
}



/\*\*
 \* 清除 activityName 之上 的 所有Activity, activityName 保留狀态
 \* @param activityName Activity 的名字 Activity.getClass().getSimpleName()
 \* \*/
public void clearActivityFrom(String activityName){
    if((activityName == null) || (listActivity == null)|| (listActivity.size() <= 0)){
        return ;
    }
    for (int i = (listActivity.size()-1); i>=0; i--){
        if(!activityName.equals(listActivity.get(i).getClass().getSimpleName())){
            listActivity.get(i).finish();
        }else{
            break;
        }
    }
}

private final class MyActivityLifecycleCallbacks extends SimpleActivityLifecycleCallbacks{
    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState){
        super.onActivityCreated(activity, savedInstanceState);
        listActivity.add(activity);
    }
    @Override
    public void onActivityDestroyed(Activity activity)      {
        super.onActivityDestroyed(activity);
        activity.finish();
        //LogUtil.e("即将移除 "+activity.getClass().getSimpleName());
        listActivity.remove(activity);
        /\*StringBuilder builder = new StringBuilder();
        builder.append("站内剩餘:");
        for (int i = 0; i < listActivity.size(); i++){
            builder.append(listActivity.get(i).getClass().getSimpleName()+"    ");
        }
        LogUtil.e(builder.toString());\*/
        activity = null;
    }
}
           

package com.qiyuan.qianguan.callback;

import android.app.Activity;

import android.app.Application.ActivityLifecycleCallbacks;

import android.os.Bundle;

public abstract class SimpleActivityLifecycleCallbacks implements ActivityLifecycleCallbacks{

@Override

public void onActivityCreated(Activity activity, Bundle savedInstanceState){

}

@Override
public void onActivityStarted(Activity activity){
    
}

@Override
public void onActivityResumed(Activity activity){
    
}

@Override
public void onActivityPaused(Activity activity)
{
    
}

@Override
public void onActivityStopped(Activity activity)
{
    
}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState)
{
    
}

@Override
public void onActivityDestroyed(Activity activity)
{
    
}
           

}

</pre>

繼續閱讀