2014-09-23 3 views
1

포트에 UDP 소켓을 통한 활동이 있습니다. 홈 버튼을 누르면 배경이 활성 상태가됩니다. OnPause()OnStop() 메서드가 호출됩니다. 이제 UDP 패킷을 받으면 내 활동을 재개하려고합니다. I가 내가 가진 이해 다른 게시물 읽기 : Android : 단일 작업 다시 시작

 
Intent intent = new Intent(this.getApplicationContext(), myActivity.class); 

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

startActivity(intent); 

이 솔루션 :

  1. android:launchMode="singleTask" (또는 singleInstance)로 활동을 선언 다음
  2. 을, 나는 활동을 재개 할 때 나 양식을 작동하지 않습니다. startActivity(intent)에 대한 호출이 내 전경에서 활동을 나타내지 않고 onResume()이 호출되지 않습니다.

    다음 플래그는 작업을 수행하지만 작업을 지우고 새 작업을 다시 시작하지 않으려합니다. 전경에 자신의 작업을 가져다하기 위해

     
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    
+0

udp 소켓이 서비스 중이십니까? – njzk2

+0

주 활동이 닫힐 때 소켓에 서비스가 제공됩니다. 주 활동을 만들면 소켓은 서비스에서 언 바운드되고 주 활동은 그것을 바인딩합니다. – peregrinus

답변

0

, 당신은 예를 들어, 비 활동 상황에 startActivity()를 호출해야합니다 또한

getApplicationContext().startActivity(intent); 

, 당신은 어떤을 사용할 필요가 없습니다 특수 실행 모드 (singleTask 또는 singleInstance)가 작동합니다.

이것은 Android 4.4에서 수정 된 Android 버그입니다. 이 질문은 2014 년 이후이므로 OP가이 문제를보고 있다고 가정합니다.

How to resume Android Activity programmatically from background과 댓글 스레드를 참조하십시오.