2011-04-09 156 views

回答

2

是的。創建擴展android.app.Application一類,然後在清單把這個類作爲您的應用程序

<application android:name=".ClassNameOfTheClassYouCreated"...> 
    ...activities etc here... 
</application> 

現在的名字,你創建的類是您的應用程序。只要應用程序正在運行,它的生命週期就一直存在,它擁有活動堆棧,您可以添加一些自定義字段來保存您的值。要從Activity獲得Application實例,請點擊this.getApplication()

關於字段值被重置的編輯(迴應@hackbod的推薦):在單例中使用靜態字段是保存全局值的另一種方式,但我覺得提出的更優雅。就像你提到的重置值一樣,這也可能發生在其他情況下(如來電,方向改變),這就提出了在使用它們之前需要清理(或檢查存在,稱之爲任何你喜歡的)值的需要。總是!

+1

這是強烈反對。使用這種方法可以通過你的應用程序創建各種不好的細微流程。例如,如果您在活動A中的應用程序中放置了一個值,並在活動B中使用它,那麼用戶將按下home,您的進程將被終止,並且它們會返回到您的應用程序中......它們將返回到活動B ,但是在一個新的過程中,所以應用程序不再保留你最後設置的值。此外,更一般地說,使用無論如何不會有什麼好處 - 您可能只需將該值放在一些靜態全局中,即相同的事物,並且更加模塊化。 – hackbod 2011-04-09 08:39:41

+0

@hackbod我總是發現它對繪製緩存很有用。 1)我不在乎圖像何時放入或何時被清除我只希望緩存可用於所有實例,並且2)將任何內容放入靜態變量是內存泄漏的通道。但是,我想我不會將它用於任何狀態信息。 – 2011-04-09 09:15:57

+0

@hackbod我爲你編輯了答案。此外,主頁按鈕不會殺死任何東西。即使後退按鈕也不會殺死任何東西。 – 2011-04-09 09:19:00

0

信息流可以以不同的方式實現,所有你需要的是一種方法來保存和檢索數據。

您可以保存,然後讓你的數據,你想讓它通過使用網絡通過靜態類,文件存儲,數據庫,甚至遠程存儲流量。

意圖是更好的方法。 Android創建它,所以使用它。 :)

0

http://developer.android.com/guide/topics/providers/content-providers.html

內容提供商存儲和檢索數據並使其對所有應用程序進行訪問。他們是跨應用程序共享數據的唯一方式;沒有所有Android軟件包可以訪問的公共存儲區域。

如果您想公開自己的數據,您有兩種選擇:您可以創建自己的內容提供者(ContentProvider子類),也可以將數據添加到現有的提供者 - 如果有一個控件類型相同的數據,你有權寫入。

+0

爲內容提供商提供一個示例,將價值從一項活動傳遞給另一項對我有幫助的活動 – NandaKumar 2011-04-11 14:59:02

相關問題