解释这有点麻烦,但请耐心等待。我还在帖子底部放了一个可视化的视图。
我有一个带有2个struct T;
struct S {
member: T,
}
impl Drop for S {
fn drop(&mut self) {
destroyT(self.member)
}
}
// elsewhere, in a library
fn destroyT(t: T) {
//...
}
(A,C)和一个Services
(B)的应用。该活动是启动第二个服务所绝对需要的,因为它创建了一个GUI,该GUI无法从服务本身内部创建,因为它需要活动参考。
Activity
正在监听,一旦触发,将启动Service A
,后者将启动Activity B
。
因为我目前对如何让Service C
与Service A
通信(C已绑定到B)一无所知,所以我认为我会在Service C
每次启动时启动活动触发,然后立即隐藏活动。
除了不良设计外,这种方法通常还可以,但是存在一个主要缺陷:由于我不断启动活动(Service A
,所以它不会堆积起来),它一直出现在屏幕上,从而阻止用户与手机进行互动在那段时间内。我确实立即运行launchMode="singleInstance"
来使该moveTaskToBack(true);
尽快消失,但几秒钟后仍然可见。
现在我想知道如何
A)让Activity
检查Service A
和Activity B
是否正在运行(用户不介意活动每小时闪烁一次,我只是不想带它每15秒前进一次)
或
B)将Service C
设置为“可触摸”,这样触摸就可以通过,用户不会注意到它在屏幕上停留了一秒钟(我已经使其透明了,因此主屏幕是可见的,但仍然阻止用户点击主屏幕上的任何内容)