Parcelable自定义处理程序,消息从未收到 [英] Parcelable custom handler, message never received

查看:238
本文介绍了Parcelable自定义处理程序,消息从未收到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要parcelable Handler对象由包从一个活动向它发送到服务,以获得从这项服务中的一些信息。

I want to parcelable a Handler object to send it by a Bundle from one Activity to a service in order to get some info from this service.

现在,测试它是一个简单的消息。下面是活动中的code:

Right now, to test it it's a simple message. Here's the code in the Activity:

private MyHandler mHandlerSharing = new MyHandler() {
    public void handleMessage(Message msg) {
        // this line in the Activity is never reached when debugging
        String data = msg.getData().getString("data");
        Toast.makeText(mContext, data, Toast.LENGTH_SHORT).show();
    }
};

// in some function
mSecureSharing.putExtra(Constants.HANDLER, (Parcelable) mHandlerSharing);

然后,在服务onStartCommandMetehod我做到以下几点:

Then, in the Service onStartCommandMetehod I do the following:

    MyHandler myHandler = (MyHandler) intent.getExtras().getParcelable(Constants.HANDLER);
    Message msgObj = myHandler.obtainMessage();
    Bundle b = new Bundle();
    b.putString("data", "SecureSharing running");
    msgObj.setData(b);
    myHandler.sendMessage(msgObj);

该MyHandler的类是以下内容:

The class MyHandler is the following:

import android.os.Handler;
import android.os.Parcel;
import android.os.Parcelable;

public class MyHandler extends Handler implements Parcelable{
private int mData;

public MyHandler(){
    super();
}

public int describeContents() {
    return 0;
}

public void writeToParcel(Parcel out, int flags) {
    out.writeInt(mData);
}

public static final Parcelable.Creator<MyHandler> CREATOR = new Parcelable.Creator<MyHandler>() {
    public MyHandler createFromParcel(Parcel in) {
        return new MyHandler(in);
    }

    public MyHandler[] newArray(int size) {
        return new MyHandler[size];
    }
};

private MyHandler(Parcel in) {
    mData = in.readInt();
}

}

该服务接收自定义处理程序,但从来没有,但并调用从类处理器的sendMessage方法,但从来没有活动收到消息...

The service receives the custom handler but never but and call sendMessage method from the class Handler, but the Activity never receives the message...

有关类MyHandler的,我基本上是用code从 Android开发者网站并添加处理器继承和构造函数。

For MyHandler class, I basically used the code from the android developer site and add the Handler inheritance as well as a constructor.

什么可能是错的?

在此先感谢!

推荐答案

我想你想你的活动与服务进行通信,这些可以成为你的选择:

I assume you want your activity to communicate with service these can be your choices:


  1. 使用ResultReceiver一个例子可以找到的这里

  2. 使用LocalBroadcastReceiver例子可以发现,<一个href=\"http://www.intertech.com/Blog/using-localbroadcastmanager-in-service-to-activity-communications/\"相对=nofollow>这里

  3. 您可以使用活页夹绑定到你的活动实例服务可以在这里找到

  4. 如果你想使用RPC,那么你应该去信使的例子可以找到的这里这里

  5. 对于RPC您还可以使用AIDL文件的例子可以找到的此处,当然在开发者网站的

  1. Use ResultReceiver an example could be found here
  2. Use LocalBroadcastReceiver example could be found here
  3. You can use Binder to bind your service to activity example could be found here
  4. If you want to use RPC then you should go with Messanger an example could be found here and here
  5. For RPC you can also use AIDL files example could be find here and of course on developer site

这篇关于Parcelable自定义处理程序,消息从未收到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆