Глобальный класс приложения со стеком действий - PullRequest
2 голосов
/ 12 марта 2011

Исходя из этой статьи более эффективный способ обновления пользовательского интерфейса из службы Мне было интересно, смогу ли я сделать этот шаг дальше и реализовать следующее.Однако у меня может быть неправильное понимание жизненного цикла приложений.

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, preferenceacctivity и т. Д. Очевидно, я не думал, что это решило бы какую-либо проблему, это был просто эксперимент в жизненных циклах Android.

1 Ответ

1 голос
/ 12 марта 2011

Будет ли стек действительным в течение жизненного цикла приложения?

Конечно, он не будет действительным.Вы предполагаете, что каждое действие создано и уничтожено в той же последовательности.Во многих случаях их не будет (например, пользователь нажимает HOME).

Какую бы проблему, по вашему мнению, вы не решали таким образом, это не является правильным решением для любого натяжения воображения.

...