Andorid Studio无法启动外部Service的解决办法

在初学Service时,发现使用外部Service,可以关闭另一个app已启动的Service,但却无法直接启动。一番学习之后,发现在Android 8.0(API 级别 26)对应用在后台运行时可以执行的操作施加了限制。

“每当应用在后台运行时,它都会消耗设备的一些有限资源,如 RAM。这可能会导致用户体验受损,尤其是在用户使用资源密集型应用(如玩游戏或观看视频)的情况下。”

———后台执行限制|安卓开发人员 (google.cn)

这也就导致了无法直接在后台startService()。

解决方法

1. 在外部app的AndroidManifest.xml中插入语句

在启动外部Service的app中注册以下信息:

<queries>
        <package android:name="com.xxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxx" />
</queries>

在引号中键入启动的Service所在的包名,如"com.example.anotherapp"。

注意不是在被启动的app中注册以上内容,比如在需要启动app1的Service,而这一启动的操作是在app2中完成的,则修改app2的AndroidManifest.xml。

初学者注意不要放在<application/>里面了(笔者一开始就是这么干的)。

2. 使用低版本的Android

在启动app之前选用Android 8.0之前的系统,在AVD Manager可选择这一内容。 若已装有低版本Android的虚拟机,切换到在此虚拟机上运行这两个app就好了。

下图是新建低版本Android虚拟机的步骤。       

Android Studio右上角的AVD Manager
在创建新的Android虚拟机时,选用低版本系统
创建完成后选用低版本的虚拟机即可

需要注意的是,不论是启动Service的app还是被启动Service的app,两者需要同时在虚拟机中运行,否则同样是无法启动的。若要查看app是否已运行,可在选择虚拟机选项(上图中有出现)的左侧查看,安卓图标右下角亮起时便代表此app已投入运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值