活动到活动通信没有完成

时间:2014-01-08 21:06:42

标签: android android-intent android-activity

我有两个活动:一个是主要的(A),第二个是从A(B)开始的。我用startActivityForResult(intent, id)开始B。

我知道我可以通过setResult()方法将结果发送回A,但据我所知,结果不会被发送,直到finish()被调用。我需要将数据从B发送到A 而不关闭B(甚至在关闭之前几次)。有没有办法实现这个目标?

据我所知,实现这一目标的选择并不多。我可以使用SharedPreferences但是我还需要某种事件来通知A它必须读取一个值!

任何想法都赞赏。

------最终解决方案------

最后,我得到了@ Nathaniel Waggoner的建议。这就是我的所作所为:

在我的活动中,我声明了BroadcastReceiver的扩展名:

class ActivityBroadcast extends BroadcastReceiver {
  @Override
  public void onReceive(final Context context, final Intent intent) {
    final String txt2send = intent.getStringExtra("txt2send");
    if ((txt2send != null) && (!txt2send.isEmpty())) {
      // Do the needed stuff
      ...
    }
  }
}

所以现在我在我的类中声明了ActivityBroadcast实例并初始化它:

private static ActivityBroadcast broadcast_signal;
broadcast_signal = new ActivityBroadcast();

我控制它的方式只是我的Intent触发onReceive方法的方法是将IntentFilter设置为SENDTXT2SOCK自定义操作,这样:

// CustomActions.SENDJOIN2CHAN is just a constant from a customized public class
// where I define my own constants to not interfere with the "official" ones
registerReceiver(broadcast_signal, new IntentFilter(CustomActions.SENDTXT2SOCK));

这样我就说broadcast_signal只会注册CustomActions.SENDTXT2SOCK行为,所以其他任何内容都会被忽略。现在我们只需要将所需活动的信号发送给该接收器:

final Intent intentResult = new Intent(CustomActions.SENDTXT2SOCK);
intentResult.putExtra("txt2send", "blabla");
sendBroadcast(intentResult);

而这一切都像魅力一样!

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

你也可以试一试OnsharedPreferenceChangelistner