从一个活动到另一个活动的持续通知

时间:2015-05-26 14:52:53

标签: android android-activity messaging

我怎么能有一个活动B,它会弹出并部分模糊一个父母"活动A,不断向A?

发送更新信息

当然,正常的机制是将一个Intent发送回A.但是这只能在调用finish()时发生一次。

我想另一种方法是在A中有一个处理程序,让B发布到处理程序。让处理程序从A到B可以通过" global"申请会员。

有更好的方法吗?

编辑:使用DialogFragment似乎是一个很好的解决方案。但是DialogFragment存在位置问题。请参阅我的新帖子:https://stackoverflow.com/questions/30471032/position-dialogfragmet-relative-to-view

1 个答案:

答案 0 :(得分:2)

据我所知,活动总是涵盖另一个活动。在任何时候,Android都可以回收内存并销毁活动A.

这意味着您应该以不同方式管理数据。通过您的Application实例,如果没有太多可共享的内容。

但你可能应该考虑另一个storage mechanism。您希望将哪种数据传递给活动A?你是什​​么意思"部分模糊"?

修改

我建议你的DialogFragment保留对你的Activity的引用。看看developer page。你可以尝试实现这样的东西:

在您的活动中,当您想要显示对话框时:

void showDialog() {
    DialogFragment newFragment = MyAlertDialogFragment.newInstance(
            R.string.alert_dialog_two_buttons_title);
    newFragment.setActivity(this);
    newFragment.show(getFragmentManager(), "dialog");
}

在DialogFragment类中,只需实现一个setter方法:

public static class MyAlertDialogFragment extends DialogFragment {
  Activity activity;

  //rest of the code here

  public void setActivity(Activity a){
      this.activity = a;
  }
  private void notifyActivity(){
      int level = aMethod();
      activity.somethingHappened(level);
  }

}

现在,每次您想要调用Activity的方法时,请使用之前传递的引用。

我也会制作一个接口,让你的Activity实现它。像这样,您不依赖于一个特定的Activity,但它可以是任何UI组件。希望它有所帮助。