搜尋

首頁  >  問答  >  主體

android - 如何避免activity再次启动时又一次初始化数据

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


初始化数据是在onCreate()

PHP中文网PHP中文网2771 天前1226

全部回覆(13)我來回復

  • 迷茫

    迷茫2017-04-17 17:36:18

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

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 17:36:18

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

    解決方法:

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

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


    附一張 Lifecycle 的圖片

    回覆
    0
  • 黄舟

    黄舟2017-04-17 17:36:18

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

    回覆
    0
  • PHPz

    PHPz2017-04-17 17:36:18

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

    回覆
    0
  • 阿神

    阿神2017-04-17 17:36:18

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

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:36:18

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:36:18

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 17:36:18

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

    回覆
    0
  • 黄舟

    黄舟2017-04-17 17:36:18

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

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:36:18

    onSavedInstance()
    onRestoreInstance()

    回覆
    0
  • 取消回覆