2012-03-20 3 views
1

디자인중인 Android 앱에 약간의 문제가 있습니다.Android 앱에서 onCreate() VS onRestartingFromBackGround() 결정

나는이 두 이벤트 중 하나가 발생할 때마다 몇 가지 코드를 실행해야합니다

1. The app is NOT running in the background, so the user launches it. 
2. The app IS already running in the background, so the user is really 
    just re-opening it. 
(I only need to run the code once, not twice.) 

내가 (등에서 onCreate, ONSTART, onRestart, onResume) 내 코드에 전화를 넣어 상관없이 항상 바람직하지 않은이 에서 onCreate()와 onRestartingFromBackGround을() : 나는 결정하기 위해 할 수

A. My code gets run twice when #2 happens. 
B. My code runs even when the user is just moving from 
    MAIN to a SUB-ACTIVITY, then back to MAIN again. 
C. My code doesn't run at all. 

이 구분의 종류가 제공되지 않습니다 영향을?

나는 onRestart()를 사용할 수 있다고 생각했지만 onRestart()가 #B 할 때조차도 매우 놀랐다. (#B는 실제로 내 앱의 "다시 시작"으로 간주됩니까?)

+1

"(코드를 한 번만 실행하고 두 번 실행하면 안됩니다.") 정의 상 두 번 실행해야합니다. # 2는 이전에 # 1이 발생했다는 것을 의미합니다. 그렇지 않으면 앱이 백그라운드에 있지 않습니다. – CommonsWare

+0

[getIntent()] (http://developer.android.com/reference/android/content/Intent.html#getIntent (java.lang.String))의 값을 확인하여 상황에 따라 원하는 것을 제어하십시오. onStop()에서 finish()를하고 onCreate에 코드를 넣을 수 있습니다. – Jakar

+0

"정의에 따르면 두 번 실행해야합니다."응? 그래서 나는 내가하는 일을 통제하지 못합니까? 나는 *하고 싶지 않아도 * 두 번 실행해야합니까? (#A 고정은 bool 플래그로 간단합니다.) 그러나 그 다음에 나열된 다른 문제가 발생합니다. – Carol

답변

0

순수 자바 입장에서는 아이콘을 처음 누를 때로드 스레드를 사용할 수 있습니다. 이로드 스레드는 전화를 폴링하여 주 활동 스레드가 현재 실행 중인지 여부를 확인한 다음로드 스레드에서 정확한 코드로 이동합니다. ANDROID의 경우, 프로세스 이름이나 프로세스 ID를 폴링 할 것입니다.

관련 문제