在我的应用主要活动中,我启动了这样的服务:
Intent i = new Intent(this, MyService.class);
startService(i);
当用户按下按钮时,我会停止这样的服务:
Intent i = new Intent(this, MyService.class);
stopService(i);
当我这样做时,正在进行呼叫的前台活动被杀死并消失。
认为可能需要在单独的进程中运行服务,我尝试在清单中的服务上设置android:process =“:remote”,但这并没有改变行为。
似乎我无法在不杀死整个应用程序的情况下停止服务。有没有解决的办法?
答案 0 :(得分:1)
我弄清楚应用程序被杀的原因。在我的服务的onDestroy()方法中,我正在禁用这样的广播接收器:
PackageManager pacman = getPackageManager();
pacman.setComponentEnabledSetting(
new ComponentName(this, MyReceiver.class),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
0);
此代码禁用AndroidManifest.xml中定义的广播接收器。最后一个参数0应该设置为DONT_KILL_APP。我将代码更改为此,它解决了问题:
PackageManager pacman = getPackageManager();
pacman.setComponentEnabledSetting(
new ComponentName(this, MyReceiver.class),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
答案 1 :(得分:0)
没有日志,我们无法确定,但我有一个很好的预感,你的应用程序正在抛出异常并且你正在默默地捕捉和关闭,或者你有一个奇怪的关键路径,呼叫finish
。
在任何情况下,您所描述的内容都不是预期的,但我们需要更多信息才能提供更好的答案