Android中的Application类和Service之间的通信

时间:2015-01-06 07:36:18

标签: android android-service

我有一个要求,我已经扩展了一个"应用程序"我的Android项目中的类。

例如:

  public class myApp extends Application implements
    myReceiver.Receiver {...}

我是否可以通过"服务"进行沟通。使用我的 - " Message.obtain"或者我应该使用其他东西?请指教。

我还想将数据传递给我的服务,这是一个字符串/常量值。我可以这样做:

 private void sendMsg(int arg1, int arg2) {  
        if (mBound) {  
            Message msg = Message.obtain(null, MyService.Hello,
                arg1, arg2);  
            try {  
                mService.send(msg);  
             } catch (RemoteException e) {  
                Log.e(TAG, "Error sending a message", e);  

             }  
         }  
     }  

1 个答案:

答案 0 :(得分:2)

试试这个: 在extends类中创建一个内部类

private class MyMessageHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        Bundle bundelData = msg.getData();
        if (bundelData != null) {
            String mString = (String) bundelData.get(IConstants.HOME_SCREEN_LISTUPDATE);
            if (mString != null) {
             // your logic   
            }
        }
    }

通过传递Messenger

启动服务
Intent serviceIntent = new Intent(this, WatchService.class);
serviceIntent.putExtra(IConstants.MYMESSAGE_HANDLER, new Messenger(new MyMessageHandler));
startService(serviceIntent);
服务onStartCommand中的

获取信使

if (intent != null) {
Bundle mExtras = intent.getExtras();
if (mExtras != null) {
Messenger innrMessenger = (Messenger)mExtras.get(IConstants.MYMESSAGE_HANDLER);
}
}

如果您想将数据从服务发送到该类

Message message = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString(IConstants.HOME_SCREEN_LISTUPDATE, state);
message.setData(bundle);
innrMessenger.send(message);//get call back for handleMessage(Message msg)