android - 用户通知需要上下文

标签 android android-context

为了通知用户,我使用了 AlertDialog 或 Snanckbar。它们都需要一个 Activity 上下文才能显示。三种情况:

  • 当前 Activity 产生的消息:这很简单
  • 从另一个线程产生的消息:我正在实现一个广播/接收器模式,这样线程可以广播消息, Activity 接收并显示消息
  • 关闭 Activity 产生的消息,例如 Activity Master 启动 Activity 选择器,用户选择一个选项,代码执行一些操作然后返回到 Master

    // Selector activity draft sample
    mButtonSeelcted.setOnClickListener(new OnClickListener() {
    @Override
      public void onClick(View view) {
        super.onClick(view);
        doMagicForSelected();
        mContext.sendBroadcast(intentForUserMessage);
        mContext.startActivity(intentToMasterActivity);
      }
    });
    

现在没有显示消息,因为当接收器启动时,Selector Activity 已完成。此外,它会给出一个 WindowLeaked 异常,因为 AlertDialog 永远不会被关闭。

有什么想法吗?有没有我缺少的模式?

最佳答案

I am implementing a broadcast/receiver pattern so the thread can broadcast the message and the activity receives and shows the message

请使用进程内消息总线(例如,LocalBroadcastManager、greenrobot 的 EventBus)。使用系统广播不仅会浪费 CPU 和电池,还会带来安全问题(例如,任何应用程序都可以监视您的消息)。

Is there a pattern I am missing?

在您的第三种情况下,“主 Activity ”负责显示此信息,而不是被销毁的 Activity 。因此,将信息添加到您传递给 startActivity()Intent 中,告诉“主 Activity ”显示该信息。

关于android - 用户通知需要上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43373354/

相关文章:

java - 如何使用 HdmiControlService

java - F-Droid.com 上的 R.java 文件

android - 如果彼此相等则更改 textViews

添加新 fragment 后Android滚动到底部

android - 通过静态类传递上下文是否有效?

android - 在 Thread 捕获 UncaughtException 之前上下文会发生什么

android - 转储移动内存

android - xaml 中的 Xamarin 绑定(bind)默认值

android - 如何从 Android 中的 Context 获取 View ?

android - 如果上下文不是 Activity 上下文而是应用程序上下文,如何启动 Intent