Android ResultReceiver从服务到活动
我有一个在后台运行的服务,它是从一个活动启动的,在没有活动的情况下执行其工作。通过ResultReceiver,我可以与活动进行通信,但只要活动还活着。一旦destroid并再次启动,就不会与活动进行通信。我做错了什么Android ResultReceiver从服务到活动,android,android-intent,service,Android,Android Intent,Service,我有一个在后台运行的服务,它是从一个活动启动的,在没有活动的情况下执行其工作。通过ResultReceiver,我可以与活动进行通信,但只要活动还活着。一旦destroid并再次启动,就不会与活动进行通信。我做错了什么 // Activity public void onReceiveResult(int resultCode, Bundle resultData) { String test = resultData.getStr
// 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);
}
}
}
为简单起见,请使用本地广播管理器,并在活动中注册和取消注册它。onResume、onPause生命周期非常感谢它的工作。我是这样实现的: