내 Android 앱의 매니페스트 파일에 브로드 캐스트를 받았다고 선언했습니다. 모든 것은 괜찮습니다. 그러나 앱이 종료되면 (Android 설정의 '강제 정지'버튼을 통해) 브로드 캐스트 리시버는 브로드 캐스트에 계속 응답하고 내 애플리케이션을 다시 실행합니다.앱이 종료 될 때 Android가 BroadcastReceiver를 사용 중지합니다.
어떻게 멈출 수 있습니까?
감사
내 Android 앱의 매니페스트 파일에 브로드 캐스트를 받았다고 선언했습니다. 모든 것은 괜찮습니다. 그러나 앱이 종료되면 (Android 설정의 '강제 정지'버튼을 통해) 브로드 캐스트 리시버는 브로드 캐스트에 계속 응답하고 내 애플리케이션을 다시 실행합니다.앱이 종료 될 때 Android가 BroadcastReceiver를 사용 중지합니다.
어떻게 멈출 수 있습니까?
감사
이미 answer이 있습니다.
기본적으로 응용 프로그램 클래스의 onDestroy 메서드에서 PackageManager을 통해 브로드 캐스트 수신기를 사용하지 않도록 설정하고 응용 프로그램 클래스의 onCreate 메서드에서 다시 사용하도록 설정합니다.
전화 활동의들의 OnDestroy 방법 unregisterReceiver 및 onPause(). onCreate() 및 OnResume()에 등록하십시오.
, 내 수신기에 대한 매니페스트를 사용하고 있습니다. – jtnire
응용 프로그램에는 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;
}
감사합니다,이 작품,하지만이 할 수있는 올바른 일이? – jtnire