我在想,是否有兩種活動之間的通信方式,其中一種是暫停(堆疊)?與堆疊的活動進行通信
我試着sendBroadcast和接收數據,但到目前爲止沒有運氣去實現它。 我在onCreate()中註冊接收器並在onDestroy()中取消註冊,所以它在第二個活動Activity工作時仍然可以工作。 我已經將過濾器添加到接收器,我的意圖有適當的標誌。
它甚至有可能使其工作? 或者有沒有更好的方法來實現這種溝通?
============= EDIT添加代碼的請求==========
====== CODE ===== =
- RECEIVER
private BroadcastReceiver localBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Globals.DATA_TO_ADSLIST)) {
int value = intent.getIntExtra(Globals.AD_ORGANIZER_TO_ADSLIST_VALUE, 0);
if (value > 0) {
listViewAdapter.notifyDataChange();
}
}
}
- BROADCAST
Intent dataToAdsList = new Intent(Globals.DATA_TO_ADSLIST);
dataToAdsList.putExtra(Globals.AD_ORGANIZER_TO_ADSLIST_VALUE, 1);
context.sendBroadcast(dataToDbService);
- UNREGISTER
@Override
public void onDestroy() {
super.onDestroy();
if (getActivity().isTaskRoot()) {
AQUtility.cleanCacheAsync(getActivity());
}
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(localBroadcastReceiver);
}
- REGISTER
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
IntentFilter filter = new IntentFilter();
filter.addAction(Globals.SEND_ADS_LIST);
filter.addAction(Globals.DATA_TO_ADSLIST);
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(localBroadcastReceiver, filter);
}
感謝您的幫助!
如果您發佈代碼,找到解決方案會更好。 –
我已經添加了代碼。 – JakubW
您無法與暫停的活動進行通信。您必須將該活動置於前臺才能開始任何處理。解決問題的兩種方法:使用'startActivityForResult'調用頂級活動,然後使用'setResult'和'finish' - 在前一箇中使用'onActivityResult'來完成你所需要的。第二個是使用一種服務,它不會以相同的方式暫停。 –