완전히 다른 접근 방식을 취해야합니다.액티비티를 시작할 때 또는 startActivityForResult()
으로 액티비티를 시작하면 onCreate()
, onStart()
및 onResume()
이 호출되기 때문에 중요하지 않습니다.
이제 작업 클래스에서 작업을 수행하기 위해 다른 스레드를 시작하는 메서드가있는 경우 플래그로 작업해야합니다. 액티비티가 처음 실행될 때 자동으로 스레드를 시작해야한다면 if 절을 둘러 싸서 처음 실행될 때 설정 한 플래그를 확인해야합니다.
아이디어는 스레드가 처음 실행될 때 Application
인스턴스 또는 SharedPreferences
인스턴스에서 활동을 부울로 설정하는 것입니다. 해당 액티비티로 돌아와서 onCreate()
이 호출되어 자동으로 해당 스레드가 실행되기를 원하지 않으면 아래 예제에서와 같이 if 코드 절을 사용하여 호출 코드를 래핑해야합니다.
다음은 예입니다.
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
// Other stuff
if (!YourApplicationInstance.wasCalled) {
// Run your thread or do something else you want to do only once.
// Set the wasCalled flag to true to not run this code again
// if onCreate() is called a second time.
YourApplicationInstance.wasCalled = true;
}
}
당신은 내 의사 클래스 YourApplicationInstance
를 구현하는 방법을 이해하는 Using Application context everywhere?를 읽을해야합니다.
** ** ** :'if' 문에주의! – Kgrover