【发布时间】:2016-06-08 18:28:15
【问题描述】:
我有一个在后台运行的服务,它从一个活动开始,并且在没有活动的情况下完成它的工作。使用 ResultReceiver 我可以与活动通信,但只要活动还活着。一旦 destroid 并重新开始,就没有返回到活动的通信。我做错了什么?
// Activity
public void onReceiveResult(int resultCode, Bundle resultData) {
String test = resultData.getString("Event");
}
public MyResultReceiver mReceiver;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mReceiver = new MyResultReceiver(new Handler());
mReceiver.setReceiver(this);
Intent i=new Intent(this, AppService.class);
i.putExtra(AppService.TIME, spinner_time.getSelectedItemPosition());
startService(i);
// Service
public class AppService extends Service {
public static final String TIME="TIME";
int time_loud;
Notification note;
Intent i;
private boolean flag_silencemode = false;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
time_loud = intent.getIntExtra(TIME, 0);
resultReceiver = intent.getParcelableExtra(RESULT_RECEIVER);
resultData = new Bundle();
resultData.putString("Event", "ysfgsdfgsdfg");
resultReceiver.send(55, resultData);
play(time_loud);
return(START_NOT_STICKY);
}
@SuppressLint("ParcelCreator")
public class MyResultReceiver extends ResultReceiver {
private Receiver mReceiver;
public MyResultReceiver(Handler handler) {
super(handler);
}
public void setReceiver(Receiver receiver) {
mReceiver = receiver;
}
public interface Receiver {
void onReceiveResult(int resultCode, Bundle resultData);
}
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
if (mReceiver != null) {
mReceiver.onReceiveResult(resultCode, resultData);
}
}
}
【问题讨论】:
标签: android android-intent service