【问题标题】:Communication between Class and Main Activity Android类和主要活动Android之间的通信
【发布时间】:2013-08-01 10:42:43
【问题描述】:

我是Android新手,所以希望你能原谅我的无知

我做了一个活动来用我的手机控制一些蓝牙设备,现在一切正常,我想从这个活动中生成一个新类,一个负责所有蓝牙通信的类。

我有一些问题:

首先:在我的活动中,我使用了一个广播接收器来监听蓝牙适配器的一些动作,例如 STATE_ON、BOND_BONDED……使用这些动作我更新了我的视图,我调用了一些方法等等。

那么,是否可以在我的班级内部继续收听这个广播接收器,然后将更改发送到我的主要活动以更新视图等等?

第二:我真的需要从我的蓝牙课程发送信息到我的主要活动,我从我的设备读取的信息,来自广播接收器的信息......所以,这是在课程和课程之间传递信息的最佳方式主要活动?

非常感谢您的帮助:)

【问题讨论】:

标签: android class broadcastreceiver communication main-activity


【解决方案1】:

从主线程调用 BroadcastReceiver 的 onReceive() 方法: "这个方法总是在其进程的主线程中调用" (http://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive(android.content.Context, android.content.Intent))。

这意味着您可以从 onReceive() 方法更新您的用户界面。您需要做的就是使用这样的本地类:

BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // update the ui
    }
};

以编程方式注册此接收器(而不是在清单中定义它),您就可以开始了:

Context.registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter)

【讨论】:

  • 所以我无法收听我用来获取蓝牙类中蓝牙适配器不同状态的广播接收器?
  • 你可以但是你必须从你的蓝牙类的接收器发送一个广播到BroadcastReceiver之上。您可以使用 LocalBroadcastManager 发送广播(更高效、更安全)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多