Android 使用service和messenger管理两个应用程序之间的通信
我想开发两个应用程序。我需要一个应用程序能够启动和停止第二个应用程序。为此,我使用一个服务在这两个应用程序之间设置了一个messenger。该服务将粘贴到第二个应用程序 我在app1中初始化了意图,如下所示:Android 使用service和messenger管理两个应用程序之间的通信,android,service,messenger,Android,Service,Messenger,我想开发两个应用程序。我需要一个应用程序能够启动和停止第二个应用程序。为此,我使用一个服务在这两个应用程序之间设置了一个messenger。该服务将粘贴到第二个应用程序 我在app1中初始化了意图,如下所示: protected void onCreate() { super.onCreate(); Intent mIntent = new Intent(); mIntent.setAction("com.package.service"); bindServic
protected void onCreate()
{
super.onCreate();
Intent mIntent = new Intent();
mIntent.setAction("com.package.service");
bindService(mIntent, mServiceConnection, BIND_AUTO_CREATE);
}
private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName arg0) {
mIsBinded=false;
mServiceConnection=null;
}
@Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
mIsBinded=true;
mMessenger = new Messenger(arg1);
}
};
我发送了一条消息来关闭app2
在app2中,我提供了如下服务:
public class RemoteServiceClient extends Service
{
static final int STOP = 0;
static final int CONTINUE = 1;
private static final String TAG ="service" ;
class MyHandler extends Handler
{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch(msg.what)
{
case STOP:
sendBroadcast(new Intent("stop"));
Log.d(TAG,"stopapp");
break;
case CONTINUE:
break;
}
}
}
Messenger mMessenger = new Messenger(new MyHandler());
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mMessenger.getBinder();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//TODO do something useful
return Service.START_STICKY;
}
}
我还将清单放入应用程序中:
<service android:name="com.package.app.service"
android:process=":exported">
<intent-filter>
<action android:name="com.package.service" />
</intent-filter>
</service>
如果您想向其他服务发送“自杀”消息,请使用
startService
而不是绑定到将立即被杀死的服务,但是我的任务是向另一个应用发送自杀消息:app1必须启动app2,杀死它,完成任务并重新启动app2。是的,我知道,但如果有一种更简单的方法,我真的没有区别:)我如何使用startService?@Daniele我真的需要这样的东西,我需要两个应用程序通过Messenger相互通信。我有个问题,你能查一下吗?如果您想向其他服务发送“自杀”消息,请使用startService
而不是绑定到将立即被杀死的服务,但是我的任务是向另一个应用发送自杀消息:app1必须启动app2,杀死它,完成任务并重新启动app2。是的,我知道,但如果有一种更简单的方法,我真的没有区别:)我如何使用startService?@Daniele我真的需要这样的东西,我需要两个应用程序通过Messenger相互通信。我有个问题,你能查一下吗?
05-04 15:47:28.168 16741-16755/com.package.app1 W/System.err: android.os.DeadObjectException
05-04 15:47:28.178 16741-16755/com.package.app1 W/System.err: at android.os.BinderProxy.transact(Native Method)