0
  • 最佳答案

    Android 8.0 还对特定函数做出了以下变更:

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




    链接:https://www.jianshu.com/p/71e16b95988a


    1276071737229864960  评论     打赏       我爱吃西瓜
    • 也就是你的服务不正常被干掉了是吧?


      你这样子,注释掉你干掉服务的地方。看看是系统干掉的,还是你自己干掉的。

      1153952789488054272  评论     打赏       拉大锯
      • 我爱吃西瓜  回复 @拉大锯
        注释了,还是被干掉了。。。呜呜
        我爱吃西瓜 2020-08-19 18:14   回复 1276071737229864960
      • 我爱吃西瓜  回复 @拉大锯
        刚刚在真机上测试,确是正常的,是因为模拟器的原因吗,难道模拟器会自动杀死服务。。。害
        我爱吃西瓜 2020-08-19 18:27   回复 1276071737229864960
      • 拉大锯  回复 @我爱吃西瓜
        startService除非你stop了,否则不会自己干掉的。当你发现设备差异的时候,你得考虑设备的配置和系统的版本了。是不是高版本改了规则呀,是不是内存不够用呀。当然啦,一般改这种大规则的比较少。你说的是模拟器不行,如果是真机不行还说得过去,毕竟国内很多厂商都杀白名单以外的服务。
        拉大锯 2020-08-19 19:31   回复 1153952789488054272
      • 我爱吃西瓜  回复 @拉大锯
        找到原因了,和你说的一样,Android版本问题
        我爱吃西瓜 2020-08-19 22:18   回复 1276071737229864960
      • 我爱吃西瓜  回复 @拉大锯
        如果针对 Android 8.0 的应用尝试在不允许其创建后台服务的情况下使用 startService() 函数,我在启动service时添加了版本判断,但是忘记了应用必须在创建服务后的五秒内调用该服务的 startForeground() 函数。所以才导致启动几秒后出现错误,另外我的真机是Android7,所以真机上是正常的。
        我爱吃西瓜 2020-08-19 22:22   回复 1276071737229864960
      • 我爱吃西瓜  回复 @拉大锯
        参考:https://www.jianshu.com/p/71e16b95988a
        我爱吃西瓜 2020-08-19 22:22   回复 1276071737229864960
    相关问题
    我不会数据结构 · Service
    2020-08-18 17:55 668 5
    不会飞的鸟 · android / service
    2021-04-14 17:53 465 2
    2022-03-05 20:50 107 6
    阿肥 · service
    2022-07-14 16:12 76 10
    程序员肖肖 · 安卓 / service
    2023-03-06 10:39 24 5
    幻影~ · 提问
    2024-04-13 20:13 8 2
    幻影~ · 找工作
    2024-04-07 10:44 14 2
    幻影~ · 问题
    2024-03-31 17:20 7 2
    TONYGFX · AOSP
    2024-03-28 17:11 4 2