Androidでactivityメソッドをすべて閉じる

2438 ワード

androidでappを終了するときにActivityをすべて閉じる方法はたくさんあります.例えば、グローバルなBroadCastを送信し、現在のpidを直接殺すなどですが、私たちがやっている機能がsdkであれば状況は違います.プロジェクトがオンラインになった後、私たちはやはりカスタムStackを通じてactivityを管理することにしました.
まずこの坑人のBroadCastについてお話しします.私たちが送ったのは無秩序放送なので、そのActivityが先に届くとは知りませんでした.これは深刻な問題を引き起こしました.==後に放送を受け取ったActivityは再描画されますが、私たちのニーズはactivityがバグを再作成することを望んでいません.次に直接kill pidを考えましたが、悲劇的なのは私たちのsdkとappが同じアプリケーションを使っていて、pidを殺した後にアプリケーションが直接脱退しました.の結局stack自身でsdkのactivityを手動で管理
この方式はみんな使っているので、私はあまり言わないで、直接codeを見ます.
activity管理スタックを定義する
    
package com.example.tasktest;

import java.util.Stack;

import android.app.Activity;

/**
 * 
 * 〈       〉
* 〈 〉 Activity * * @see [ / ]( ) * @since [ / ] ( ) */ public class ActiivtyStack { private static Stack mActivityStack = new Stack(); private static ActiivtyStack instance = new ActiivtyStack(); private ActiivtyStack() { } public static ActiivtyStack getScreenManager() { return instance; } // activity public void popActivity(Activity activity) { if (activity != null) { activity.finish(); mActivityStack.remove(activity); activity = null; } } // Activity public void pushActivity(Activity activity) { mActivityStack.add(activity); } // Activity public void clearAllActivity() { while (!mActivityStack.isEmpty()) { Activity activity = mActivityStack.pop(); if (activity != null) { activity.finish(); } } } }
sdkのactivityの親を定義する
package com.example.tasktest;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;

public abstract class BaseActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("jone", "base onCreate");
        //     stack
        ActiivtyStack.getScreenManager().pushActivity(this);

    }

    @Override
    protected void onDestroy() {
        Log.i("jone", "base Destory");
        //      stack
        ActiivtyStack.getScreenManager().popActivity(this);
        super.onDestroy();

    }
}

リソースurlhttp://download.csdn.net/download/yaya_soft/8589337