从一个 Activity 到另一个的连续通知

Continuous notification from one Activity to another

如何让 activity B 弹出并部分遮挡 "parent" activity A,不断向 A 发送更新信息?

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

我想另一种方法是在 A 中有一个处理程序,然后让 B post 给处理程序。可以通过 "global" Application 成员将处理程序从 A 获取到 B。

有没有更好的方法?

编辑:使用 DialogFragment 似乎是一个很好的解决方案。但是,DialogFragment 存在位置问题。请看我的新post:

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

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

但您可能应该考虑另一个 storage mechanism。您想将哪种数据传递给 Activity A ? "partially obscures" 是什么意思?

编辑

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

在你 Activity 中,当你想显示你的对话框时:

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

在你的 DialogFragment class 中,只需实现一个 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 组件。希望对你有帮助。