Android远程服务继续重启

Android远程服务继续重启,android,Android,好的,我已经开发了一个应用程序,它使用远程服务来进行实时GPS跟踪。我正在使用下面的代码启动并绑定到服务 远程服务使用aidl,设置通知图标,运行GPS和locationListener。在onLocationChanged中,处理程序通过回调将数据发送回调用方。几乎是直接从网上的示例和资源中获得的 我想允许服务继续运行,即使应用程序关闭。重新启动应用程序时,我希望应用程序再次绑定到服务(如果正在运行,则使用现有服务),并再次从跟踪器接收数据 我目前已将应用程序模式设置为singleTask,由

好的,我已经开发了一个应用程序,它使用远程服务来进行实时GPS跟踪。我正在使用下面的代码启动并绑定到服务

远程服务使用aidl,设置通知图标,运行GPS和locationListener。在onLocationChanged中,处理程序通过回调将数据发送回调用方。几乎是直接从网上的示例和资源中获得的

我想允许服务继续运行,即使应用程序关闭。重新启动应用程序时,我希望应用程序再次绑定到服务(如果正在运行,则使用现有服务),并再次从跟踪器接收数据

我目前已将应用程序模式设置为singleTask,由于另一个问题,无法使用singleinstance

我的问题是,即使在应用程序和服务从应用程序本身、AdvancedTaskKiller或Forceclose关闭后退出,服务也会重新启动并初始化GPS。触摸通知将打开应用程序。我再次停止跟踪,删除通知并关闭GPS关闭应用程序,几秒钟后再次重新启动服务。唯一能阻止它的方法就是关掉手机

我能做些什么来阻止这一切的发生。这是否与运作模式有关?开始不粘或开始重新投递?或者我需要使用stopSelf()

我的理解是,如果在我使用bindService()时服务没有运行,那么将创建该服务……那么我真的还需要使用start/stopService吗?我想如果我想在应用程序关闭后仍能运行服务,我需要使用它。这就是我不在onDestroy()中解除绑定/停止服务的原因。这是正确的吗

我还没有看到这方面的任何其他信息,所以我不知道去哪里找

请帮忙!谢谢 帕特里克

ServiceConnectionSpeaked:我看到了很多这样的情况:

04-21 09:25:23.347: ERROR/ActivityThread(3246): Activity com.codebase.GPSTest has leaked ServiceConnection com.codebase.GPSTest$6@4482d428 that was originally bound here
 04-21 09:25:23.347: ERROR/ActivityThread(3246): android.app.ServiceConnectionLeaked: Activity com.codebase.GPSTest has leaked ServiceConnection com.codebase.GPSTest$6@4482d428 that was originally bound here
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread$PackageInfo$ServiceDispatcher.<init>(ActivityThread.java:977)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread$PackageInfo.getServiceDispatcher(ActivityThread.java:872)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ApplicationContext.bindService(ApplicationContext.java:796)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.content.ContextWrapper.bindService(ContextWrapper.java:337)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.codebase.GPSTest.bindService(GPSTest.java:2206)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.codebase.GPSTest.onStartStopClick(GPSTest.java:1589)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.codebase.GPSTest.onResume(GPSTest.java:1210)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.Activity.performResume(Activity.java:3763)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2937)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2965)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2516)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3625)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.access$2300(ActivityThread.java:119)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1867)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.os.Handler.dispatchMessage(Handler.java:99)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.os.Looper.loop(Looper.java:123)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.main(ActivityThread.java:4363)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at java.lang.reflect.Method.invokeNative(Native Method)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at java.lang.reflect.Method.invoke(Method.java:521)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at dalvik.system.NativeStart.main(Native Method)

在重新启动时,logcat输出中是否有任何“有趣”的内容?不幸的是,我还没有任何logcat输出。我无法让它在模拟器中发生,而且在usb调试时也没有让它发生在我的设备上。我想看看今天能不能买到什么。好吧,我想没有人见过这个。或者也许没人想读这个长长的问题。或者可能是我对API缺乏了解。无论如何,我决定将其作为本地服务运行。看看效果是否更好。至少在我能解决这个问题之前。检查这个解决方案:D
04-21 09:25:23.347: ERROR/ActivityThread(3246): Activity com.codebase.GPSTest has leaked ServiceConnection com.codebase.GPSTest$6@4482d428 that was originally bound here
 04-21 09:25:23.347: ERROR/ActivityThread(3246): android.app.ServiceConnectionLeaked: Activity com.codebase.GPSTest has leaked ServiceConnection com.codebase.GPSTest$6@4482d428 that was originally bound here
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread$PackageInfo$ServiceDispatcher.<init>(ActivityThread.java:977)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread$PackageInfo.getServiceDispatcher(ActivityThread.java:872)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ApplicationContext.bindService(ApplicationContext.java:796)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.content.ContextWrapper.bindService(ContextWrapper.java:337)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.codebase.GPSTest.bindService(GPSTest.java:2206)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.codebase.GPSTest.onStartStopClick(GPSTest.java:1589)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.codebase.GPSTest.onResume(GPSTest.java:1210)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.Activity.performResume(Activity.java:3763)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2937)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2965)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2516)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3625)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.access$2300(ActivityThread.java:119)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1867)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.os.Handler.dispatchMessage(Handler.java:99)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.os.Looper.loop(Looper.java:123)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at android.app.ActivityThread.main(ActivityThread.java:4363)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at java.lang.reflect.Method.invokeNative(Native Method)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at java.lang.reflect.Method.invoke(Method.java:521)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
 04-21 09:25:23.347: ERROR/ActivityThread(3246):     at dalvik.system.NativeStart.main(Native Method)
     04-21 09:58:55.487: INFO/dalvikvm(3440): Uncaught exception thrown by finalizer (will be discarded):
 04-21 09:58:55.487: INFO/dalvikvm(3440): Ljava/lang/IllegalStateException;: Finalizing cursor android.database.sqlite.SQLiteCursor@447ef258 on gps_data that has not been deactivated or closed
 04-21 09:58:55.487: INFO/dalvikvm(3440):     at android.database.sqlite.SQLiteCursor.finalize(SQLiteCursor.java:596)
 04-21 09:58:55.487: INFO/dalvikvm(3440):     at dalvik.system.NativeStart.run(Native Method)