2011-03-12 47 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所說,這並沒有奏效。此外,從Activity派生出來並不是一個好主意,因爲那樣你還必須得到列表的活動,優先級等等。顯然,我認爲這不會解決任何問題,它只是Android生命週期中的一個實驗。

+0

呃一眼就看不到,因爲你從來沒有真正創建過Stack 類型的對象,因此mActivityStack將始終爲空。當運行這段代碼時,我會期待push/popActivity的空指針異常。 –

+0

忘記將名稱編輯爲MyActivity = x。另外,忘了實例化我的stack = x。更新和修復。 –

回答

1

堆棧在應用程序的生命週期中是否有效?

當然這不會有效。您假定每個活動都以相同的順序創建和銷燬。它們在很多情況下不會(例如,用戶按HOME)。

無論你認爲自己是以這種方式解決什麼問題,這不是任何想象力的正確解決方案。