【问题标题】:Android how to broadcast background notification to current active activity?Android如何向当前活动活动广播背景通知?
【发布时间】:2014-09-11 20:48:51
【问题描述】:

我是 android 新手,我知道这个问题被问了很多,但我没有找到一个好的解决方案。

我有一个单例 SocketIO 类,它在后台不断接收信息。同时我有很多活动做不同的事情。

现在我要做的是当 SocketIO 类收到信号时,我需要中断当前活动并弹出一个警报对话框以显示警报对话框。当用户点击“是”按钮时,它会转到某个活动来完成它的工作。

现在我将 socketIO 客户端放在一个单例类中,并在每个活动中编写一个接收器来接收来自 socketIO 类的通知。但问题是我有很多活动做不同的事情,每个活动中的接收者实际上是相同的。这有点浪费资源,而且效率不高。有没有更有效的方法从后端非活动类调用当前正在运行的前台活动?

Singleton SocketIO 类和每个活动中的接收者就像在这个link

【问题讨论】:

    标签: android singleton broadcastreceiver


    【解决方案1】:

    在你的单例中使用 SharedPreferences。

    这就是你使用它的方式

    SharedPreferences sharedpreferences;
    Editor editor = sharedpreferences.edit();
    editor.putString("NAMETOCALL", "valuetostoreforlateruse");
    editor.commit();
    

    这就是您访问它以获取通知的方式

    SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
    sharedpreferences.getString("NAMETOCALL", null);
    

    【讨论】:

    • Mike:对不起~我不确定我是否理解你的代码,也许我没有表达清楚。您的代码似乎从其他活动中获得了单例类的价值,对吧?无论我目前在做什么活动,我都会弹出一个窗口,显示来自单例类的信息。我必须在每个活动中都写一个接收器吗?
    • 我的代码就是这样做的。存储该值并在您希望它出现的每个类中调用它。
    • 谢谢mike,但我希望有更好的方法来做到这一点,我不想在每个活动中都调用它......我希望有一些类可以让我只指定代码在服务类中,我不必在每个活动中都调用它......我目前正在使用类似的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多