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

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


初始化数据是在onCreate()

PHP中文网
PHP中文网

认证0级讲师

모든 응답(13)
迷茫

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

小葫芦

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

해결책:

초기화 작업을 OnCreate()이나 OnResume() 메서드 대신 Activity의 OnStart() 메서드에 넣습니다.

정적 전역 변수 식별자를 0으로 설정하고, 초기화 후에 1로 설정하고, 초기화 전에 변수가 0인지 확인할 수도 있지만, 이 문제를 해결하려면 LifeCycle을 이해하는 것이 좋습니다. 문제.


첨부된 Lifecycle 사진

黄舟

첫 번째 현상은 데이터가 다시 초기화되었기 때문에 해결 방법은 다음과 같습니다.
1. 왜 데이터가 다시 초기화되었는지 생각해 보세요. 위에서 언급한 것처럼 OnResume()에서 초기화했을 수도 있습니다. , OnStart() 메소드.
2. 문제의 원인은 데이터가 여러 번 초기화되기 때문입니다. 따라서 데이터 초기화를 위한 다중 호출 기능을 추가하면 초기화 데이터를 캡슐화할 수 있습니다. 단일 관심 모델과 약간 비슷합니다. 이것의 장점은 여러 실행에서 발생할 수 있는 문제를 해결한다는 것입니다.

PHPzhong

Activitydestroy일 때마다 초기화 프로그램을 onCreate에 넣어도 원하는 결과를 얻을 수 없습니다. 그러니 먼저 log를 확인하고 Activity 라이프사이클을 살펴보는 것이 좋겠습니다.

阿神

페이지에 들어갈 때마다 데이터가 이미 존재하는지 확인하세요. 이미 존재하는 경우 캐시를 사용하고 네트워크에 데이터 로드를 요청하지 마세요.

Peter_Zhu

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

大家讲道理

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

Ty80

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

黄舟

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

巴扎黑

onSavedInstance()
onRestoreInstance()

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿