Android 检查设备重新启动后是否必须启动wheter服务

Android 检查设备重新启动后是否必须启动wheter服务,android,Android,我试图在我的应用程序中实现一个服务,它是由一个活动启动的。服务如果服务已启动,则应在后台运行,直到(由活动)手动停止为止。该服务必须检查每个传入的SMS是否有特殊字符串。如果消息包含字符串,则服务应通过发送另一条SMS(如自动响应系统(ARS))进行响应。 第一个问题是系统在大约60分钟后停止服务。 此外,如果服务在系统关闭之前运行,则必须在引导后启动服务。 以下是服务的代码: (很抱歉,我没有时间翻译德语的评论。) 编辑: 现在服务返回START\u STICKY。我想这会管用的。(实际上是这

我试图在我的应用程序中实现一个服务,它是由一个活动启动的。服务如果服务已启动,则应在后台运行,直到(由活动)手动停止为止。该服务必须检查每个传入的SMS是否有特殊字符串。如果消息包含字符串,则服务应通过发送另一条SMS(如自动响应系统(ARS))进行响应。 第一个问题是系统在大约60分钟后停止服务。 此外,如果服务在系统关闭之前运行,则必须在引导后启动服务。 以下是服务的代码: (很抱歉,我没有时间翻译德语的评论。)

编辑: 现在服务返回
START\u STICKY
。我想这会管用的。(实际上是这样,但出现了错误)。1小时后,logcat显示以下信息:

08-03 16:31:29.345: E/AndroidRuntime(9885): java.lang.RuntimeException: Unable to start service de.[...].SMSReaderService@41912c88 with null: java.lang.NullPointerException
08-03 16:31:29.345: E/AndroidRuntime(9885):     at de.[...].SMSReaderService.onStartCommand(SMSReaderService.java:161)

08-03 16:32:20.940: E/AndroidRuntime(9933): java.lang.RuntimeException: Unable to start service de.[...].SMSReaderService@41913a30 with null: java.lang.NullPointerException
08-03 16:32:20.940: E/AndroidRuntime(9933):     at de.[...].SMSReaderService.onStartCommand(SMSReaderService.java:161)
在“Anwendungsmanager”(我不知道它的英文名称…可能类似于“application manager”)中,我可以看到服务正在运行。。。一秒钟。然后它立即停止并尝试重新启动。2次尝试后,它运行。这是在logcat记录错误时发生的

第161行:
searchString=(String)intent.getExtras().get(在启动后获取搜索字符串)

文档建议您从
onStartCommand()
方法返回。这将在资源可用时再次启动您的服务,前提是它以前已被运行时终止

至于在引导时启动服务,您可以创建一个用于侦听运行时发送的消息的。当您的
BroadcastReceiver
接收到
Intent
时,您就可以启动
服务了。如果您只需要在设备关闭后启动
服务
,则可以执行类似的操作,以侦听并保持
服务的状态(运行或不运行)

另请注意,您需要启用BootCompleted权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


这并不能解决您的60分钟问题,但这里有一个如何在启动时启动服务的指南——使用广播接收器和存储设置的首选项,在OnReceive中,只需检查首选项并做出适当的响应即可。启动完成后重置此首选项。我已经尝试了
服务。启动\u STICKY
,但似乎不起作用。即使它运行在不同的进程上。服务如何知道它是在设备关闭之前运行的?
START\u STICKY
只有在运行时终止您的
服务时才会执行某些操作。如果您的
服务
自行终止,它将不会为您做任何事情。您需要确保您的服务不会自行终止。我还编辑了我的帖子来回答你关于设备关闭的问题。有没有办法用调试器模拟重新启动?我正在使用我的手机,我不想重新启动它x倍,我甚至无法调试
IntentReceive的onReceive方法
。这个问题可能值得在这个问题之外进行一些研究(谷歌可能),如果没有找到答案,另一个StackOverflow问题。我有另一个问题:当我重新启动设备时,服务立即崩溃。如果我无法创建意图,因为我不知道搜索字符串,那么我必须如何启动StartupReceiver类中的服务?
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />