2012-01-25 54 views
1

我是android開發新手。 我在android上製作了一個應用程序,但是我的應用程序在後臺長時間睡眠後面臨崩潰。我嘗試了單例和子應用程序,但是他們兩人都導致我在長時間睡眠後崩潰。動態全局配置變量android

我保存的配置是許多對象的列表,這些配置也應該可以在整個應用程序中訪問。

任何想法如何處理?我搜索了網站尋找答案,但沒有運氣。因爲共享偏好僅適用於字符串,布爾值,整數和浮點數....也是我的目標是Android 2.1及更高版本。

有沒有簡單的程序來避免我改變整個應用程序機制?

謝謝

+0

你可以使用一個sqlite數據庫來存儲你的所有對象在一個表中, – Houcine

+0

你必須堅持這種信息。 File,Sqlite和SharedPreferences是標準選項,並且所有這些網頁上都有示例代碼 – Rich

+0

是的,如果我使用sqlite或共享首選項包含簡單變量的對象,那麼這很容易,但是如果我有一個列表在我的對象?然後我需要爲此設計一個完整的數據庫,這就是爲什麼遠離數據庫或共享首選項。我現在正在做的事情是填寫stefan post,並檢查數據庫是否爲null,然後我將他發回閃屏ti重新初始化數據......我認爲這對登錄也是有用的。我在java中的經驗是有限的,因爲我曾經在web應用程序php.so工作,它對我來說有點困惑:) –

回答

0

我對Android中的Singletons有過不好的經驗。問題在於,如果應用程序被銷燬,但是jvm不是單身人士的狀態,當活動在同一個jvm中重新啓動時,即單身人士的同一個實例(連接到舊的類加載器)。這是否解釋你的應用程序的行爲?

一個可能的解決方案是使用由Android創建的應用程序實例。它的生命週期由android管理,您可以在onCreate()中管理狀態,...由於API級別14還有活動生命週期回調。在這裏尋找更多的信息:http://developer.android.com/reference/android/app/Application.html#registerActivityLifecycleCallbacks%28android.app.Application.ActivityLifecycleCallbacks%29

如果我需要一個全局變量和數據庫或共享首選項不合適解決方案我通常使用應用程序實例來存儲狀態。您可以通過在您的活動或服務中調用

(MyApplication) this.getApplication(); 

獲得初始化的應用程序或服務實例。在onCreate()中。您在其onCreate()方法中初始化您的MyApplication實例(它擴展了Application)。

+0

以及有點這是有幫助的,因爲我厭倦了很多解決方案,我失去了什麼是一個正常的使用。我正在遠離將數據保存到數據庫中,而我的應用程序配置是對象和對象列表,如下所示: public class MainObjs extends Application { \t private List Weather = null; \t私人列表 SearchResult = null; \t私有列表目錄= null; } 每個這些都有setter和getter,有沒有任何參考如何使用(MyApplication)this.getApplication();與我的動態對象?如何訪問以及如何設置它們? –

+0

是的,我建議先看看這裏:http:// stackoverflow。com/a/708317/1127492 – Stefan

+0

感謝您的回覆stefan, 這正是我正在做的,但應用程序內的數據動態填充,當應用程序睡覺,他們正在清除空異常錯誤,我猜目錄是被設置爲空,我應該重新初始化它們?是對的還是我想念瞭解它? –