我想知道有没有办法在两个活动之间进行通信,其中一个活动暂停(堆叠)?
我试图通过sendBroadcast实现它并接收数据但到目前为止没有运气。 我在onCreate()中注册接收器并在onDestroy()中取消注册它,这样它在第二个活动的Activity工作时仍然可以正常工作。 我已将过滤器添加到接收器,我的意图有适当的标志。
甚至可以使它工作吗? 或者有更好的方法来实现这种沟通吗?
=============编辑按要求添加代码==========
======的 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);
}
感谢您的帮助!
答案 0 :(得分:1)
暂停活动后,您无法直接与其进行通信,因为它只是暂停了。如果您想要调用另一个活动,然后将数据传回第一个活动,请使用startActivityForResult
开始第二个活动 - 然后在" child"活动,在setResult
之前使用finish
。对于setResult
来电,您可以将Intent
传递给您希望传递给"父母的任何信息"活动。最后,在父活动中,覆盖onActivityResult
- 这将在" child"时自动调用。活动终止 - 在那里,您可以从Intent
检索数据并相应地对其进行操作。
答案 1 :(得分:0)
<强> SEND_BROADCAST 强>
Intent i = new Intent("BROADCAST_TEST");
i.putExtra("DATA","TEST MSG");
sendBroadcast(i);
注册BROADCAST
registerReceiver(uiUpdated, new IntentFilter("BROADCAST_TEST"));
private BroadcastReceiver uiUpdated= new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
String mData;
Type=intent.getExtras().getString("DATA");
}
};
希望这有帮助!干杯!