START_STICKY 表示行为类似于服务的 Activity
Posted
技术标签:
【中文标题】START_STICKY 表示行为类似于服务的 Activity【英文标题】:START_STICKY for Activity that behaves like a Service 【发布时间】:2020-07-26 20:51:08 【问题描述】:如果我们希望 Activity 像服务一样运行,我们可以使用以下方法将其移至后台:
moveTaskToBack(true);
我们可以使用以下命令将其从“最近”屏幕中隐藏:
android:excludeFromRecents="true"
但是我们如何让它 START_STICKY 在它被杀死后自动重新创建?
【问题讨论】:
这毫无意义。Activity
与 Service
完全不同。为什么要将Activity
用作Service
? Activity
(通常)具有 UI(视图)并且是作为整个用户界面一部分的任务的一部分。 Service
是一个执行后台处理的组件。它没有用户界面。
@DavidWasser 我知道这一切,我想这样做是为了学习,这只是我想解决的一个挑战。
【参考方案1】:
Activity
被杀死后,您无法自动重新创建它。这将在用户设备上创建拒绝服务攻击,通过不断地在他们面前重新启动Activity
并阻止他们做任何其他事情。除非你认为它不会启动/显示任何 UI,而只是在创建但未启动的状态下运行,在这种情况下也没有办法这样做,因为这就是 Service
的用途—— Activity
s 用于显示 UI。
短版:如果您想要这些类似服务的行为,您应该使用Service
,然后从您的Activity
访问Service
。
【讨论】:
以上是关于START_STICKY 表示行为类似于服务的 Activity的主要内容,如果未能解决你的问题,请参考以下文章
RxJs操作符,其行为类似于withLatestFrom,但会等待第二个流的值。