您好我正在运行后台服务来检查我的服务器是否有新数据。
但如果我杀了App,后台服务也会死掉。 如果我在其上运行后台服务;正在运行,系统会在运行几次后将其终止。
清单
<service
android:name=".backgroundSerive"
android:enabled="true"
android:exported="false"/>
选项2
<service
android:name=".backgroundSerive"
android:process=":my_process"
android:enabled="true"
android:exported="false"/>
MainAActivity - 启动服务
Intent i = new Intent(this, backgroundSerive.class );
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startService(i);
服务
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
...start runnable
return START_STICKY;
}
我尝试了两种选择,服务一直被杀死。
任何建议。使我的服务器始终运行。 谢谢
答案 0 :(得分:1)
您需要从服务中调用startForeground()
,以降低Android实际杀死它的可能性。请查看此sample以获取示例实现。
答案 1 :(得分:1)
startForeground函数将服务发送到前台,因此android系统将此操作视为前台任务。这不太可能被杀死。
如果您选择服务销毁操作为START_STICKY,它将被销毁,但在销毁之后,应该使用null意图重新初始化。
您可以考虑对此类事件使用警报。 由于警报在内部流程中运行,因此可以减少应用开销,但它们会提供重复检查。