2012-03-23 2 views
1

내 Android 앱의 매니페스트 파일에 브로드 캐스트를 받았다고 선언했습니다. 모든 것은 괜찮습니다. 그러나 앱이 종료되면 (Android 설정의 '강제 정지'버튼을 통해) 브로드 캐스트 리시버는 브로드 캐스트에 계속 응답하고 내 애플리케이션을 다시 실행합니다.앱이 종료 될 때 Android가 BroadcastReceiver를 사용 중지합니다.

어떻게 멈출 수 있습니까?

감사

답변

2

이미 answer이 있습니다.

기본적으로 응용 프로그램 클래스의 onDestroy 메서드에서 PackageManager을 통해 브로드 캐스트 수신기를 사용하지 않도록 설정하고 응용 프로그램 클래스의 onCreate 메서드에서 다시 사용하도록 설정합니다.

+1

감사합니다,이 작품,하지만이 할 수있는 올바른 일이? – jtnire

0

전화 활동의들의 OnDestroy 방법 unregisterReceiver 및 onPause(). onCreate() 및 OnResume()에 등록하십시오.

+0

, 내 수신기에 대한 매니페스트를 사용하고 있습니다. – jtnire

1

응용 프로그램에는 onDestroy 메소드가 없습니다. 그것은 마지막 OnTerminate을 가지고 있지만 MainActiviy가 실행되고 경우에 따라서 방송 수신기에서 항상 확인한다. 여기에 = (

가. 내가 확실히 응용 프로그램이 작동하는 경우 활성화 할 필요가 내 응용 프로그램에서 MainActivity을 내 솔루션이 불리는 적이 없어요.

질문에서 언급 한 바와 같이

 
public void onReceive(final Context context, final Intent intent){ 
    if(isAppRunning(context)){ 
     // Do my handling 
    } 
    else{ 
     // You can disable receiver here 
     Log.w(LOGTAG, "App not running. Ignore " + LOGTAG + " call."); 
    } 
}

protected boolean isAppRunning(Context context){ String activity = MainActivity.class.getName(); ActivityManager activityManager = (ActivityManager)context. getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasks = activityManager. getRunningTasks(Integer.MAX_VALUE); for(RunningTaskInfo task : tasks){ if(activity.equals(task.baseActivity.getClassName())){ return true; } } return false; }

관련 문제