android - 如何避免activity再次启动时又一次初始化数据
PHP中文网
PHP中文网 2017-04-17 17:34:18
0
13
1219

本人写了一个activity初始化了一些数据,而在另一个activity改变数据后返回时,发现数据又再一次被初始化,有什么办法可以改变这种情况吗?


初始化数据是在onCreate()

PHP中文网
PHP中文网

认证0级讲师

全部回覆(13)
迷茫

把初始化資料操作放在onCreate方法裡面,你可能是放在onResume裡面了。

小葫芦

建議可以了解一下 Android 官方教學中關於 Activity Lifecycle 中的內容。
網址為https://developer.android.com...

解決方法:

把初始化操作放在 Activity 的 OnCreate() 方法中,而不是 OnResume() 或者 OnStart() 方法中。

另外也可以透過設定靜態全域變數標識符為 0,在初始化之後就置 1,在初始化之前判斷該變數是否為 0,但這不是正道,建議了解 LifeCycle 來解決該問題。


附一張 Lifecycle 的圖片

黄舟

首先現像是資料又被初始化了,所以解決方案如下:
1,思考資料為何又被初始化,就如樓上所說,可能你在OnResume(),OnStart(),方法裡面初始化
2,產生問題的原因就是資料多次初始化,因此可以為資料初始化增加多次呼叫的功能,用物件導向的思路封裝一下初始化資料,和單利模式有那麼點像,這樣的好處是解決多次執行可能產生的問題,

PHPzhong

如果每次你的Activitydestroy了话,那么你把初始化的程序放到onCreate中自然达不到你想要的结果。所以你还是先打下log看下你Activity的生命週期。

阿神

你每次進入頁面的時候,判斷資料是否已經存在,如果已經存在,就使用緩存,不要請求網路載入資料了。

Peter_Zhu

打日誌,再結合android生命週期函數,問題基本上就解決了

大家讲道理

說明你的activity被幹掉了,考慮下原因

Ty80

通常情況Activity被銷毀才會重新呼叫onCreate,查看目前Activity的啟動模式和另一個Activity的啟動模式。

黄舟

可以考慮一下你的Activity的啟動模式,4款啟動模式,總有一款適合你

巴扎黑

onSavedInstance()
onRestoreInstance()

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板