我有一个提供服务的应用。如果重新启动智能手机,则应启动此服务。无论如何,如果应用程序是在关闭期间启动的。如果应用程序被刷掉(杀死),应该重新启动(或仍然运行)应用程序。这项工作适用于使用Android 4.2的智能手机,但不适用于安装了Android 5.1的智能手机。
我从类中开始我的服务,派生自BroadcastReceiver:
@Override
public void onReceive(Context oContext, Intent oIntent)
{
if (oIntent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
Intent oNewIntent = new Intent(oContext, CarFinderService.class);
// class can be anything which you want to start on bootup...
oNewIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
oContext.startService(oNewIntent);
}
}
这适用于Android 4.2。,但不适用于Android 5.1。我觉得这段代码还可以。或者不是?
如果服务在重新启动时启动或者应用程序被刷掉,我该怎么办?
我通过搜索网络找到了不同的东西。但是我发现了一个适用于Android 5.1的解决方案。
任何提示?
由于 汉斯
答案 0 :(得分:0)
将此添加到5.1的清单:
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
要将服务恢复到现场,请将其放入您的服务中:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleCommand(intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
这笔钱在START_STICKY。