启动设备后自动启动服务甚至应用程序未立即打开。 Android

Auto Start Service after booting device even app not opened atonce. Android

我正在制作一个系统应用程序。因为我有一个要求是 运行 启动加载后的服务,而无需一次启动该应用程序。 这个问题有点类似于这个 System App auto starting 但它没有任何合适的解决方案。 另请阅读 BOOT_COMPLETE_RECEIVER 仅在应用程序立即启动时有效。

从广播接收器启动服务后,使用广播接收器获取操作并使用 START_STICKY 服务,这样如果它因为某些优先级而被杀死而不是重新创建,并且如果你想连续 运行 该服务在后台比 WAKE_Lock 该服务和使用警报管理器检查它是否 运行nig。

在清单中设置

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

<receiver
 android:name="AutoStart"
 android:enabled="true"
 android:exported="false">
    <intent-filter>
         <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
 </receiver>

自动启动class

public class AutoStart extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) {
        // Start your service here..
    }
  }
}

感谢大家的努力,我终于得到了答案。 解决方案: 正如我所说,我的应用程序是系统应用程序,即使它们没有立即打开,系统也能正常工作。因为它们没有处于停止状态,即在 android 3.1.

之后强制执行

其次,如果用户应用需要这个,那么它的清单在 activity 中没有任何 "android.intent.category.LAUNCHER" 类别。

您还可以通过 adb 使用此命令启用您的应用 adb shell am broadcast -a com.example.demo.action.LAUNCH --include-stopped-packages (未测试)

有些好处link: http://droidyue.com/blog/2014/01/04/package-stop-state-since-android-3-dot-1/