本人写了一个activity初始化了一些数据,而在另一个activity改变数据后返回时,发现数据又再一次被初始化,有什么办法可以改变这种情况吗?
初始化数据是在onCreate()
认证0级讲师
把初始化資料操作放在onCreate方法裡面,你可能是放在onResume裡面了。
建議可以了解一下 Android 官方教學中關於 Activity Lifecycle 中的內容。 網址為https://developer.android.com...
解決方法:
把初始化操作放在 Activity 的 OnCreate() 方法中,而不是 OnResume() 或者 OnStart() 方法中。
OnCreate()
OnResume()
OnStart()
另外也可以透過設定靜態全域變數標識符為 0,在初始化之後就置 1,在初始化之前判斷該變數是否為 0,但這不是正道,建議了解 LifeCycle 來解決該問題。
附一張 Lifecycle 的圖片
首先現像是資料又被初始化了,所以解決方案如下:1,思考資料為何又被初始化,就如樓上所說,可能你在OnResume(),OnStart(),方法裡面初始化2,產生問題的原因就是資料多次初始化,因此可以為資料初始化增加多次呼叫的功能,用物件導向的思路封裝一下初始化資料,和單利模式有那麼點像,這樣的好處是解決多次執行可能產生的問題,
如果每次你的Activity都destroy了话,那么你把初始化的程序放到onCreate中自然达不到你想要的结果。所以你还是先打下log看下你Activity的生命週期。
Activity
destroy
onCreate
log
你每次進入頁面的時候,判斷資料是否已經存在,如果已經存在,就使用緩存,不要請求網路載入資料了。
打日誌,再結合android生命週期函數,問題基本上就解決了
說明你的activity被幹掉了,考慮下原因
通常情況Activity被銷毀才會重新呼叫onCreate,查看目前Activity的啟動模式和另一個Activity的啟動模式。
可以考慮一下你的Activity的啟動模式,4款啟動模式,總有一款適合你
onSavedInstance()onRestoreInstance()
把初始化資料操作放在onCreate方法裡面,你可能是放在onResume裡面了。
建議可以了解一下 Android 官方教學中關於 Activity Lifecycle 中的內容。
網址為https://developer.android.com...
解決方法:
把初始化操作放在 Activity 的
OnCreate()
方法中,而不是OnResume()
或者OnStart()
方法中。另外也可以透過設定靜態全域變數標識符為 0,在初始化之後就置 1,在初始化之前判斷該變數是否為 0,但這不是正道,建議了解 LifeCycle 來解決該問題。
附一張 Lifecycle 的圖片
首先現像是資料又被初始化了,所以解決方案如下:
1,思考資料為何又被初始化,就如樓上所說,可能你在OnResume(),OnStart(),方法裡面初始化
2,產生問題的原因就是資料多次初始化,因此可以為資料初始化增加多次呼叫的功能,用物件導向的思路封裝一下初始化資料,和單利模式有那麼點像,這樣的好處是解決多次執行可能產生的問題,
如果每次你的
Activity
都destroy
了话,那么你把初始化的程序放到onCreate
中自然达不到你想要的结果。所以你还是先打下log
看下你Activity
的生命週期。你每次進入頁面的時候,判斷資料是否已經存在,如果已經存在,就使用緩存,不要請求網路載入資料了。
打日誌,再結合android生命週期函數,問題基本上就解決了
說明你的activity被幹掉了,考慮下原因
通常情況Activity被銷毀才會重新呼叫onCreate,查看目前Activity的啟動模式和另一個Activity的啟動模式。
可以考慮一下你的Activity的啟動模式,4款啟動模式,總有一款適合你
onSavedInstance()
onRestoreInstance()