0

I have a service running in background which is started from an activity and does its work without the activity. With a ResultReceiver I can communicate to the activity, but just as long as the activity is alive. Once destroid and started again there is no communication back to the activity. What did I wrong?

        // 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);
            }
        }
    }
user1390816
  • 623
  • 2
  • 13
  • 34

1 Answers1

1

for simplicity use a local broadcast manager, and register and unregister it in your activity onResume , onPause lifecycles

NIPHIN
  • 1,071
  • 1
  • 8
  • 16
  • Thanks a lot its working. I implemented it like this: http://stackoverflow.com/questions/8802157/how-to-use-localbroadcastmanager – user1390816 Jun 13 '16 at 18:37