【发布时间】:2023-03-16 10:36:01
【问题描述】:
我正在尝试编写一个不能被用户或其他应用程序杀死的应用程序。我知道这与 Android 为其平台设计的内容背道而驰,这更像是一个概念证明。该计划是两个有两个应用程序,app1和app2。 app1启动时会启动app2然后绑定到app2上,app2启动时会确认app1是否启动,如果没有启动则启动并绑定到app1上。 app1 在 app2 上绑定和 app2 在 app1 上绑定的意义在于,当其中一个被杀死时,将调用一个方法,表明绑定已断开连接,然后可以重新启动应用程序。我目前有应用程序在启动时相互启动,但是当我强制关闭其中一个时,我似乎无法让它们重新启动。
对于我拥有的 App1 服务和 app2 非常相似:
@Override
public void onCreate()
{
this.setForeground(true);
this.startService((new Intent()
.setComponent(new ComponentName("com.app2",
"com.app2.App2Service"))));
this.bindService((new Intent()
.setComponent(new ComponentName("com.app2",
"com.app2.App2Service"))), mConnection,
BIND_DEBUG_UNBIND);
对于实现 ServiceConnection 的类,我有:
@Override
public void onServiceDisconnected(ComponentName name)
{
Log.d(TAG, "onServiceDisconnected:" + name.getClassName());
mContext.startService((new Intent()
.setComponent(new ComponentName("com.app2",
"com.app2.App2Service"))));
}
我认为我遇到的问题是,当 app1 或 app2 被杀死时,onServiceDisconnected 永远不会被调用。我认为这可能是因为我没有正确绑定到服务。
W/JavaBinder( 884): ibinderForJavaObject: 0x436274a0 is not a Binder object
W/JavaBinder( 891): ibinderForJavaObject: 0x43621d30 is not a Binder object
所以我的问题是,我怎样才能将服务绑定在一起,以便当一个被强制关闭时我会收到另一个通知?
【问题讨论】:
-
@John C - “John C”,就像在 John Connor 中一样,我猜?你的掩护被炸毁了!