Java 服务在引导时启动,但不应该启动
我有一个开关,当点击一个电池电量通知开始。这是一项注册广播接收器的服务。当切换处于Java 服务在引导时启动,但不应该启动,java,android,broadcastreceiver,android-service,Java,Android,Broadcastreceiver,Android Service,我有一个开关,当点击一个电池电量通知开始。这是一项注册广播接收器的服务。当切换处于false状态时,通知将消失。即使状态为false,如果我启动设备,通知也会启动,因此服务也会启动。我无法理解这个问题,但我在logCat中看到,当我关闭切换时,它会显示以下错误: 12-18 14:15:03.149: E/ActivityThread(337): Service com.dd.androreboot.NotificationService has leaked IntentReceiver co
false
状态时,通知将消失。即使状态为false,如果我启动设备,通知也会启动,因此服务也会启动。我无法理解这个问题,但我在logCat中看到,当我关闭切换时,它会显示以下错误:
12-18 14:15:03.149: E/ActivityThread(337): Service com.dd.androreboot.NotificationService has leaked IntentReceiver com.dd.androreboot.NotificationService$1@44eecef0 that was originally registered here. Are you missing a call to unregisterReceiver()?
12-18 14:15:03.149: E/ActivityThread(337): android.app.IntentReceiverLeaked: Service com.dd.androreboot.NotificationService has leaked IntentReceiver com.dd.androreboot.NotificationService$1@44eecef0 that was originally registered here. Are you missing a call to unregisterReceiver()?
12-18 14:15:03.149: E/ActivityThread(337): at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:805)
12-18 14:15:03.149: E/ActivityThread(337): at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:606)
12-18 14:15:03.149: E/ActivityThread(337): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1430)
12-18 14:15:03.149: E/ActivityThread(337): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1410)
12-18 14:15:03.149: E/ActivityThread(337): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1404)
12-18 14:15:03.149: E/ActivityThread(337): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:467)
12-18 14:15:03.149: E/ActivityThread(337): at com.dd.androreboot.NotificationService.onCreate(NotificationService.java:105)
12-18 14:15:03.149: E/ActivityThread(337): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2572)
12-18 14:15:03.149: E/ActivityThread(337): at android.app.ActivityThread.access$1800(ActivityThread.java:135)
12-18 14:15:03.149: E/ActivityThread(337): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
12-18 14:15:03.149: E/ActivityThread(337): at android.os.Handler.dispatchMessage(Handler.java:102)
12-18 14:15:03.149: E/ActivityThread(337): at android.os.Looper.loop(Looper.java:136)
12-18 14:15:03.149: E/ActivityThread(337): at android.app.ActivityThread.main(ActivityThread.java:5017)
12-18 14:15:03.149: E/ActivityThread(337): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 14:15:03.149: E/ActivityThread(337): at java.lang.reflect.Method.invoke(Method.java:515)
12-18 14:15:03.149: E/ActivityThread(337): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-18 14:15:03.149: E/ActivityThread(337): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-18 14:15:03.149: E/ActivityThread(337): at dalvik.system.NativeStart.main(Native Method)
105行是:
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
对于服务: 您应该在onDestroy()中注销接收器 对于活动: 在onResume()中注册接收器 您应该在onpause()中注销接收器
当您完成了服务/活动,不再需要
操作\u电池\u更换
广播时,您应该在onDestroy
中调用注销接收器(mBatInfoReceiver)
,或者确切地说是在哪里?我写了注销接收器(mBatInfoReceiver)代码>在onDestroy
中。。没有更多的错误,但启动后,通知再次显示!为什么在onPause中而不是onDestroy方法中?如何从服务调用mBatInfoReceiver
到活动?问题是通知总是在启动时启动。。我尝试使用切换按钮的SharedReferences;启动完成后,我调用启动服务的广播接收器(AutoStartReceiver)。但是不起作用。。我传递了首选项的tgpref
值,但没有传递任何内容。。现在启动后不会启动。。只要我打开门application@David_D你到底需要什么?无论您是需要在启动时启动服务,还是需要在特定时间(如3秒5分钟)内连续运行服务,。。。
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
@Override
protected void onDestroy() {
unregisterReceiver(mBatInfoReceiver);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
@Override
protected void onPause() {
unregisterReceiver(mBatInfoReceiver);
}