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管理スタックを定義する
リソースurlhttp://download.csdn.net/download/yaya_soft/8589337
まずこの坑人の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