【发布时间】:2016-03-24 17:11:31
【问题描述】:
我想知道在用户强制关闭应用程序后服务保持正常运行是否正常。
我的应用使用绑定服务在后台处理蓝牙通信,效果很好。在我的服务的 onCreate 方法中,我检查了我的 Sqlite DB 中的一些内容,但如果应用程序被强制关闭,则数据库显然无法访问。
因此,当我在几秒钟后强制停止应用程序时,服务在尝试从数据库读取时崩溃。现在我可以编写 try/catch 来检查我的 SQLiteOpenHelper 是否为空,但我希望我的服务在“强制关闭”操作时停止,并避免触发 onCreate 方法。
该应用程序和服务在其他方面都运行良好,但 UI 错误消息让我很烦。
进程:(包),PID:24030
java.lang.RuntimeException:无法创建服务 (包).TraitementsAsync.ServiceComm: java.lang.NullPointerException 在 android.app.ActivityThread.handleCreateService(ActivityThread.java:2746) 在 android.app.ActivityThread.access$1900(ActivityThread.java:169) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5476) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.lang.NullPointerException 在 (包).service.ServiceBdd.getParametre(ServiceBdd.java:414) 在 (包).service.ServiceTipe.getParametre(ServiceTipe.java:699) 在 (包).TraitementsAsync.ServiceComm.onCreate(ServiceComm.java:83) 在 android.app.ActivityThread.handleCreateService(ActivityThread.java:2736) 在 android.app.ActivityThread.access$1900(ActivityThread.java:169) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1359) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:136) 在 android.app.ActivityThread.main(ActivityThread.java:5476) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 在 dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
你从
onStartCommand返回什么? -
我返回 start_sticky
-
developer.android.com/reference/android/app/…
'''if this service's process is killed while it is started (after returning from onStartCommand(Intent, int, int)), then leave it in the started state but don't retain this delivered intent. Later the system will try to re-create the service.''' -
请不要发布您的实际包裹。我已经为你审查了。
标签: java android android-service