찾다

 >  Q&A  >  본문

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

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


初始化数据是在onCreate()

PHP中文网PHP中文网2771일 전1229

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

  • PHP中文网

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

    이렇게 이해했는데, 보이시나요?
    예를 들어 A와 B라는 두 활동에는 A와 B가 모두 수정할 수 있는 데이터가 있습니다. 이 부분을 데이터 공유 데이터라고 합니다. .
    먼저 A가 공유 데이터를 초기화한 다음 A가 B를 시작하고 B가 공유 데이터를 수정합니다. B가 돌아와서 A의 공유 데이터를 확인한 결과 우리가 예상했던 B의 수정된 데이터가 아닌 여전히 초기 초기화 데이터임을 확인했습니다.
    가능한 이유는 A가 B를 시작한 후 A가 파괴되었기 때문입니다. 이는 로그 정보를 추적해 보면 확인할 수 있다.
    B가 반환되면 시스템은 A를 다시 시작하지만 A는 onCreate()를 다시 실행하고 공유 데이터는 이때 onCreate()에서 다시 초기화됩니다.
    해결책: onSavedInstance()를 사용하여 공유 데이터를 저장하고, 저장된 공유 데이터를 onCreate()에서 사용합니다.
    공유 데이터의 예로 FileUri 문자열을 사용합니다.

    데이터 저장 위치:

    으아악

    저장된 데이터 사용:

    으아악

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:36:18

    먼저 초기화 데이터가 onCreate에만 배치되어 있는지 확인해야 할까요? 그렇다면 이 Activity는 비정상적인 상황으로 인해 재활용되어야 합니다. 이 Activity를 다시 입력하면 데이터가 다시 초기화됩니다!

    회신하다
    0
  • PHPz

    PHPz2017-04-17 17:36:18

    그냥 초기화만 안 시키면 계속 살아 있는 한 괜찮습니다. 다음 액티비티의 데이터 연산은 첫 번째 액티비티와 통신하면 괜찮습니다

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