在这里的状态通知文档中,我读到:
后台服务不应该为了接收用户交互而自行启动活动。服务应该创建一个状态通知,在用户选择时启动活动。
为什么这是“不应该”?
提前致谢
因为服务发生在后台,所以用户很可能在你的服务运行时做其他事情。如果你打断他们正在做的任何事情,只是将你的活动放在上面,他们充其量只会感到困惑,最坏的情况是会生气。
他们建议使用通知,因为这样会提醒用户您想开始一项活动,但他们可以选择在准备好时通过在通知栏中点击它来“按自己的时间”开始它。
从用户体验的角度来看,这很可能。如果您从后台进程启动 Activity,它对用户来说看起来和感觉很奇怪。让用户在他们正在做的任何事情中停下来让您的应用程序可以优先考虑是非常突兀的。状态栏通知让他们可以选择根据需要做出响应,或者只要他们认为合适就忽略该操作。
您的服务在想要获得用户交互的那一刻不知道用户在做什么。如果用户在另一个应用程序中,创建一个新活动会杀死(或至少进入睡眠状态)另一个应用程序,可能会打扰用户(如果他正在玩游戏,你可能会杀死游戏,如果他正在做更严重的事情可能是更具破坏性)。