Ниже приведены фрагменты ниже, когда действие находится на переднем плане. Однако MainActivity не сможет принять трансляцию, когда MainActivity находится в фоновом режиме.Как отправить данные из IntentService в приостановленную активность?
Как я могу убедиться, что MainActivity всегда будет получать трансляцию? Есть ли другой способ отправить данные из IntentService в приостановленную деятельность?
В моей IntentService, я посылаю данные обратно MainActivity как этот
Intent intent = new Intent();
intent.setAction(MY_SERVICE_RESULT);
intent.putExtra(MY_SERVICE_VALUE, "hello from service");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
В моей деятельности, я использую BroadcastReceiver как этот
public class MainActivity extends AppCompatActivity{
BroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver = new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
String value = intent.getStringExtra(MY_SERVICE_VALUE);
}
};
@Override
protected void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MY_SERVICE_RESULT);
LocalBroadcastManager.getInstance(this).registerReceiver(receiver, intentFilter);
}
@Override
protected void onPause() {
super.onPause();
LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);
}
}
}
Вы можете сделать это с помощью ** BroadCastReceiver ** или может быть ** Callback ** тоже. –
@RahulSharma, я уже пользуюсь BroadcastReceiver. Как использовать обратный вызов? Любой пример? –
реализовать его в своей деятельности и передать экземпляр обратного вызова в свой конструктор класса обслуживания из этого класса активности. И в классе обслуживания используйте этот обратный вызов для отправки данных в эту деятельность, в которой вы реализовали. –