分享

解决 Not allowed to start service Intent...

 创始元灵6666 2022-08-22 发布于河北

今天在调试 Android 项目时,为了解决 Service 组件在后台被杀死的情况,在 onDestroy 中加了 startService ,可在运行过程中出现了以下的错误。

Unable to stop service …… Not allowed to start service Intent ……

错误原因:Android 8.0 不再允许后台service直接通过startService方式去启动,

如果针对 Android 8.0 的应用尝试在不允许其创建后台服务的情况下使用 startService() 函数,则该函数将引发一个 IllegalStateException。 新的 Context.startForegroundService() 函数将启动一个前台服务。现在,即使应用在后台运行, 系统也允许其调用 Context.startForegroundService()。不过,应用必须在创建服务后的五秒内调用该服务的 startForeground() 函数。

解决方法

在 AndroidManifest.xml 文件中加入权限。

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

然后改用 startForegroundService 方法,代码示例:

  1. public static void startUseService(Context ctx, Class cls) {
  2. Intent intent = new Intent(ctx, cls);
  3. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  4. ctx.startForegroundService(intent);
  5. } else {
  6. ctx.startService(intent);
  7. }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多