我想打包一个Handler对象,以通过Bundle将其从一个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);
然后,在Service onStartCommandMetehod中,执行以下操作:
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类如下:
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();
}
}
该服务接收自定义处理程序,但从不接收,但从类Handler调用sendMessage方法,但Activity从未接收到该消息...
对于MyHandler类,我基本上使用了android开发人员站点中的代码,并添加了Handler继承以及构造函数。
有什么事吗
提前致谢!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句