recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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


初始化数据是在onCreate()

PHP中文网PHP中文网2771 Il y a quelques jours1218

répondre à tous(13)je répondrai

  • 迷茫

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

    把初始化数据操作放在onCreate方法里面,你可能是放在onResume里面了。

    répondre
    0
  • 高洛峰

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

    建议可以了解一下 Android 官方教程中关于 Activity Lifecycle 中的内容。
    网址为https://developer.android.com...

    解决方法:

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

    另外也可以通过设置静态全局变量标识符为 0,在初始化之后就置 1,在初始化之前判断该变量是否为 0,但这不是正道,建议了解 LifeCycle 来解决该问题。


    附一张 Lifecycle 的图

    répondre
    0
  • 黄舟

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

    首先现象是数据又被初始化了,所以解决方案如下:
    1,思考数据为何又被初始化,就如楼上所说,可能你在OnResume(),OnStart(),方法里面初始化
    2,产生问题的原因就是数据多次初始化,因此可以为数据初始化增加多次调用的功能,用面向对象的思路封装一下初始化数据,和单利模式有那么点点像,这样的好处是解决多次执行可能产生的问题,

    répondre
    0
  • PHPz

    PHPz2017-04-17 17:36:18

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

    répondre
    0
  • 阿神

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

    你每次进入页面的时候,判断数据是否已经存在,如果已经存在,就使用缓存,不要请求网络加载数据了。

    répondre
    0
  • 天蓬老师

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

    打日志,再结合android生命周期函数,问题基本就解决了

    répondre
    0
  • 大家讲道理

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

    说明你的activity被干掉了,考虑下原因

    répondre
    0
  • PHP中文网

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

    通常情况Activity被销毁才会重新调用onCreate,查看一下当前Activity的启动模式和另一个Activity的启动模式。

    répondre
    0
  • 黄舟

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

    可以考虑一下你的Activity的启动模式,4款启动模式,总有一款适合你

    répondre
    0
  • 巴扎黑

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

    onSavedInstance()
    onRestoreInstance()

    répondre
    0
  • Annulerrépondre