Android 使用service和messenger管理两个应用程序之间的通信

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

我想开发两个应用程序。我需要一个应用程序能够启动和停止第二个应用程序。为此,我使用一个服务在这两个应用程序之间设置了一个messenger。该服务将粘贴到第二个应用程序

我在app1中初始化了意图,如下所示:

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)