Communication between Android Services and Activities

前端 未结 4 1974

I want to develop an Android App with three activities and two services.

The first Service, named WebClientService, calls a REST API every

4条回答
  •  無奈伤痛
    2020-12-16 06:40

    Best option ever:

    Use LocalBroadcastManager. More reference here.

    MyService.java:

    private LocalBroadcastManager localBroadcastManager;
    private final String SERVICE_RESULT = "com.service.result";
    private final String SERVICE_MESSAGE = "com.service.message";
    
    @Override
    public void onCreate() {
        super.onCreate();
    
       // Other stuff
    
       localBroadcastManager = LocalBroadcastManager.getInstance(this);
    }
    

    Add below method in service, whenever you want to update data from service to Activity, call method by passing Arguments.

    private void sendResult(String message) {
        Intent intent = new Intent(SERVICE_RESULT);
        if(message != null)
            intent.putExtra(SERVICE_MESSAGE, message);
        localBroadcastManager.sendBroadcast(intent);
    }
    

    HomeActivity.java:

    private BroadcastReceiver broadcastReceiver;
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.activity_home);
        broadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String s = intent.getStringExtra(MyService.SERVICE_MESSAGE);
                // do something here.
            }
        };
    }
    
    @Override
    protected void onStart() {
        super.onStart();
        LocalBroadcastManager.getInstance(this).registerReceiver((broadcastReceiver), 
            new IntentFilter(MyService.SERVICE_RESULT));
    }
    
    @Override
    protected void onStop() {
        LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
        super.onStop();
    }
    

    Hope this will help you.

提交回复
热议问题