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

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

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

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

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

解决方法

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

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


        

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

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

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

2. 使用低版本的Android

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

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

Andorid Studio无法启动外部Service的解决办法_第1张图片 Android Studio右上角的AVD Manager
Andorid Studio无法启动外部Service的解决办法_第2张图片 在创建新的Android虚拟机时,选用低版本系统
Andorid Studio无法启动外部Service的解决办法_第3张图片 创建完成后选用低版本的虚拟机即可

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

你可能感兴趣的:(android,android-studio)