2010-09-23 37 views
0

我正在開發Android應用程序,並且正在使用我編寫的庫。這個庫有一個包含一些靜態字段的類。其中之一是API密鑰。該密鑰由我的庫中的其他類用於在遠程服務上進行調用。不保留所有活動的靜態參數

當我創建並且savedInstanceState爲null時,我在主Activity上初始化API密鑰一次。

我的問題在於其他活動,因爲他們在與我的圖書館打電話時有時會使用正確的API密鑰,有時他們不會。看起來好像沒有設置API密鑰。

特別是有一個活動,我從我的首選項活動調用,總是失敗,因爲沒有設置API密鑰。

活動中不存在靜態字段,因爲它們在普通的Java應用程序上?我認爲對於特定的jvm實例,所有靜態字段都會保留。 Android平臺是否將新的jvm實例用於新的活動?

+0

您應該使用sharedPreference而不是靜態全局變量來實現此功能 – Falmarri 2010-09-24 00:14:16

+0

該庫僅寫入java特定的內容。它不知道它將運行的平臺。你是說在android中靜態字段是不穩定的? – 2010-09-24 00:40:29

回答

1

請閱讀:??

http://developer.android.com/guide/topics/fundamentals.html#procthread

您的應用正在運行中。該進程可能需要在後臺處理時被殺死。您的應用程序必須正確保存任何狀態,因爲它在後臺進行(通過前Activity.onSaveInstanceState())和/或重新構建後續在新進程中重新啓動時的狀態。

+0

我看到了...我以爲只有活動被殺死了,而不是整個過程..所以我想我需要保存並恢復我在所有活動中的靜態字段...... :( – 2010-09-24 03:25:02

0

您以直接或間接方式訪問靜態字段是否還有其他活動惹的API密鑰如果是這樣,你應該​​訪問之前

+0

Γειάκαισεσένα:)我設置並通過方法獲取成員只。而且我只在一次地方設置它,一次(或者只要我的主要活動在沒有保存狀態的情況下創建)。在所有其他地方,我只是明白。 – 2010-09-23 23:55:57