찾다

 >  Q&A  >  본문

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

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


初始化数据是在onCreate()

PHP中文网PHP中文网2771일 전1227

모든 응답(13)나는 대답할 것이다

  • 迷茫

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

    초기화 데이터 작업을 onCreate 메소드에 넣어도 됩니다.

    회신하다
    0
  • 高洛峰

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

    공식 Android 튜토리얼에서 Activity Lifecycle의 내용을 알아보는 것이 좋습니다.
    URL은 https://developer.android.com...

    해결책:

    초기화 작업을 OnCreate()이나 OnResume() 메서드 대신 Activity의 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

    로깅하고 안드로이드 라이프사이클 기능과 결합하면 기본적으로 문제가 해결됩니다

    회신하다
    0
  • 大家讲道理

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

    활동이 종료되었다는 뜻입니다. 이유를 생각해 보세요

    회신하다
    0
  • PHP中文网

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

    일반적으로 onCreate는 활동이 소멸된 후에만 다시 호출됩니다. 현재 활동의 시작 모드와 다른 활동의 시작 모드를 확인하세요.

    회신하다
    0
  • 黄舟

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

    활동의 시작 모드를 고려할 수 있습니다. 4가지 시작 모드가 있으며 항상 귀하에게 적합한 모드가 있습니다

    회신하다
    0
  • 巴扎黑

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

    onSavedInstance()
    onRestoreInstance()

    회신하다
    0
  • 취소회신하다