Parcelable自定义处理程序,消息从未收到 [英] Parcelable custom handler, message never received
问题描述
我要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:
- 使用ResultReceiver一个例子可以找到的这里
- 使用LocalBroadcastReceiver例子可以发现,<一个href=\"http://www.intertech.com/Blog/using-localbroadcastmanager-in-service-to-activity-communications/\"相对=nofollow>这里
- 您可以使用活页夹绑定到你的活动实例服务可以在这里找到
- 如果你想使用RPC,那么你应该去信使的例子可以找到的这里和这里
- 对于RPC您还可以使用AIDL文件的例子可以找到的此处,当然在开发者网站的
- Use ResultReceiver an example could be found here
- Use LocalBroadcastReceiver example could be found here
- You can use Binder to bind your service to activity example could be found here
- If you want to use RPC then you should go with Messanger an example could be found here and here
- For RPC you can also use AIDL files example could be find here and of course on developer site
这篇关于Parcelable自定义处理程序,消息从未收到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!