Я хочу разделить объект Handler, чтобы отправить его пакетом из одного действия в службу, чтобы получить некоторую информацию от этой службы.
Прямо сейчас, чтобы проверить это, это простое сообщение. Вот код в 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 я делаю следующее:
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 из класса Handler, но действие никогда не получает сообщение...
Для класса MyHandler я в основном использовал код с сайта разработчиков Android и добавьте наследование Handler, а также конструктор.
Что может быть не так?
Заранее спасибо!