2011-03-12 9 views
2

この記事の末尾にあるmore efficient way of updating ui from service私はそれをさらに進歩させ、次のことを実装できるかどうか疑問に思っていましたが、私はAppsのライフサイクルを誤解しているかもしれません。複数のアクティビティを持つグローバルアプリケーションクラス

public class MyApplication extends Application { 

    private static final String TAG = MyApplication.class.getSimpleName(); 
    private static Stack<MyActivity> mActivityStack = mew 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が述べたように、これはうまくいかなかった。明らかに、私はこれがアンドロイドのライフサイクルにおける単なる実験であったどんな問題も解決するとは思っていませんでした。しかし、あなたはアクティビティから派生するのは良い考えではありません。

+0

実際にタイプStack のオブジェクトを実際に作成したことがないため、mActivityStackは常にnullになるため、一見しただけです。私は、このコードが実行されるときに、push/popActivityからのヌルポインタ例外を期待しています。 –

+0

名前をMyActivity = xに編集するのを忘れました。また、私のstack = xをインスタンス化するのを忘れてしまった。更新され、固定されています。 –

答えて

1

アプリケーションのライフサイクル中にスタックが有効になりますか?

もちろん有効ではありません。すべてのアクティビティが同じ順序で作成され、破棄されたものとみなします。それらは多くの場合(例えば、ユーザーがHOMEを押す)表示されません。

あなたがこのように解決していると思われる問題が何であれ、これは想像力の伸びによって正しい解決策ではありません。

関連する問題