我想要將一個Handler對象通過Bundle從一個Activity發送到服務,以便從此服務獲取一些信息。Parcelable自定義處理程序,從未收到消息
現在,測試它是一個簡單的消息。下面是活動中的代碼:
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我做到以下幾點:
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();
}
}
該服務接收自定義處理程序但從來沒有,並從類中調用sendMessage方法處理程序,但活動永遠不會收到消息...
對於MyHandler類,我基本上使用android developer site的代碼,並添加Handler繼承以及構造函數。
什麼可能是錯的?
在此先感謝!
的使用Messenger的類,它是專爲像您這樣的工作 – pskink 2014-11-21 12:40:36
是很容易使用? – Fernando 2014-11-21 12:58:13
是的,它是谷歌的「綁定服務機器人」 – pskink 2014-11-21 13:01:09