2012-08-06 3 views
0

사용자가 부팅 할 때 UI없이 실행되고 사용자가 아이콘을 누르면 UI로 다시 시작되는 활동을 만들고 싶습니다. 이 활동의 ​​인스턴스가 여러 개 필요하지 않습니다. 사용자가 아이콘 (활동이 이미 실행 중임)을 탭하면 앱이 다시 시작되어 (UI를 표시하기 위해) 이전 인스턴스가 삭제된다는 것을 어떻게 확인합니까? "singleTask"가 작업을 수행합니까?앱이 백그라운드에서 실행 중일 때 앱 아이콘을 탭하면 어떻게됩니까?

답변

0

singleTask는 여러 번로드되는 것을 방지하기 위해 필요한 작업입니다.

장치를 시동하려면, 시동을 들어야합니다.

public class BootReceiver extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     startService(this, new Intent(Intent.ACTION_SYNC, null, this, SomeIntentService.class); 
    } 
} 

;

<receiver android:name="BootReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

그러나 프로세스를 오래 실행하려면 전경 서비스가 필요합니다.

http://developer.android.com/reference/android/app/Service.html#startForeground(int, android.app.Notification)

는 영속적 인 상태로 서비스를하는 방법에 대한 환상적인 문서를 가지고 있습니다. IntentService를 사용하기가 간단합니다. 단일 메소드를 재정의해야합니다. http://developer.android.com/reference/android/app/IntentService.html#onStartCommand(android.content.Intent, int, int)

데이터를 sharedpreferences 또는 데이터베이스에 저장하면 액티비티가 데이터 저장소에 액세스합니다.

+0

감사합니다. 부팅시 내 활동이 IntentService를 시작하고 사용자가 아이콘을 탭하면 활동이 (자동으로) 파괴 된 다음 서비스가 실행되는 동안 시작된다는 것을 알았습니까? – Andy

+0

예! :) 그래서 당신의 활동과 모든 일이 서비스에서 이루어져야합니다. 액티비티는 지속적 저장을 통해 서비스를 모니터링합니다. –

관련 문제