具有堆栈活动的全局应用程序类

时间:2011-03-12 01:37:58

标签: android-activity stack lifecycle android

源于这篇文章more efficient way of updating UI from service我想知道我是否可以更进一步并实施以下内容。我可能对我的应用程序生命周期有误解。

public class MyApplication extends Application {

    private static final String TAG = MyApplication.class.getSimpleName();
    private static Stack<MyActivity> mActivityStack = new Stack<MyActivity>();
    private static String mTopActivity = "none";

    public static void pushActivity(MyActivity activity)
    {
        mActivityStack.push(activity);
        mTopActivity = activity.getClass().getSimpleName();
        Log.i(TAG, "push::"+mTopActivity);
    }

    public static void popActivity()
    {
        Log.i(TAG, "pop::"+mTopActivity);
        mActivityStack.pop();
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        Log.w(TAG, "low memory!!!");
        Log.w(TAG, "Current::"+mTopActivity);
    }
}

public class MyActivity extends Activity
{
    private static final String TAG = MyActivity.class.getSimpleName();

    public void onCreate(Bundle last)
    {
        super.onCreate(last);
        MyApplication.pushActivity(this);
    }

    public void onDestroy()
    {
        super.onDestroy();
        MyApplication.popActivity();
    }
}

在应用程序的生命周期中堆栈是否有效?


正如CommonsWare所说,这没有成功。另外,从Activity派生并不是一个好主意,因为你还必须得到listactivity,preferenceactivity等。显然,我不认为这会解决任何问题,它只是android生命周期中的一个实验。

1 个答案:

答案 0 :(得分:1)

  

在应用程序的生命周期中堆栈是否有效?

当然不会有效。您假设每个活动都以相同的顺序创建和销毁。它们不会在很多情况下(例如,用户按下HOME)。

无论你认为你用这种方式解决什么问题,这都不是任何想象力的正确解决方案。