1
當活動位於前臺時,下面的代碼片段可以工作。但是,當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了。我如何使用回撥?任何示例? –
將其實施到您的活動中,並從此活動類的服務類構造函數中傳遞迴調實例。並且在服務類中使用此回調將數據發送到您已實施的此活動。 –