Android ResultReceiver从服务到活动

Android ResultReceiver从服务到活动,android,android-intent,service,Android,Android Intent,Service,我有一个在后台运行的服务,它是从一个活动启动的,在没有活动的情况下执行其工作。通过ResultReceiver,我可以与活动进行通信,但只要活动还活着。一旦destroid并再次启动,就不会与活动进行通信。我做错了什么 // Activity public void onReceiveResult(int resultCode, Bundle resultData) { String test = resultData.getStr

我有一个在后台运行的服务,它是从一个活动启动的,在没有活动的情况下执行其工作。通过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);
            }
        }
    }

为简单起见,请使用本地广播管理器,并在活动中注册和取消注册它。onResume、onPause生命周期

非常感谢它的工作。我是这样实现的: