android - 如何将消息从类发送到 Activity 并向后发送

标签 android bluetooth singleton

我创建了一个类 ManageConection 来处理所有蓝牙连接。这个类实现了单例模式。

但是我有以下问题,不知道如何从我的类 ManageConection 告诉一个 Activity ,例如设备连接成功。

ManageConection 类将使用各种 Activity 。

谢谢。

最佳答案

您可以通过以下几种方式做到这一点:

1. 使用广播接收器。
在您的 Activity 中:

BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Do what you need in here
    }
};

@Override
protected void onResume() {
    super.onResume();
    registerReceiver(mReceiver, new IntentFilter(ManageConection.BROADCAST_FILTER));
}

@Override
protected void onDestroy() {
    unregisterReceiver(mReceiver);
    super.onDestroy();
}

来自您的ManageConection类(class):
public static final String BROADCAST_FILTER = "ManageConection_broadcast_receiver_intent_filter";

现在只要你想发送消息,你可以发送Intent以及每个 Activity 如何使用相同的过滤器(BROADCAST_FILTER)保持接收器获取回调:
   Intent i = new Intent(BROADCAST_FILTER);
   i.putExtra("connection_established", true);
   sendBroadcast(i);

2. 使用interface :
在您的应用程序的某个地方创建一个接口(interface)。从每个 Activity 中创建一个实例,并将其传递给 ManageConection :
    public interface ManageConection  {
    public void onConnected();
}

private ManageConection mCallback = new ManageConection() {
    @Override
    public void onConnected() {
        // callback goes here
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ManageConection.getInstace().setConnectionCallback(mCallback);
}

ManageConection设置回调的全局变量并将其设置在 setConnectionCallback() :
private ManageConection mCallback;

public void setConnectionCallback(ManageConection callback) {
    mCallback = callback;
}

现在,当您想向您的 Activity 发送回调时,只需执行以下操作:
if(mCallback != null)
    mCallback.onConnected();

关于android - 如何将消息从类发送到 Activity 并向后发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28410938/

相关文章:

android - Google Play,通过软件传感器过滤应用程序

android - 以编程方式在 Android 中无需用户交互即可连接蓝牙设备

ios - 单例类不使用 Swift 更新 UICollectionViewCell 中的数据

android - RingtonePreference 未触发 OnPreferenceChangeListener

java.util.hashmap$values 无法在 android putExtra 方法中转换为 java.io.serialized

android - 获取 Android 表情符号代码

Windows 蓝牙自动配对或禁用身份验证

java - 通过蓝牙传输视频(java编程)

java - 我怎样才能拥有从 Java 中的抽象基类型派生的 Singleton?

java - 如何保证只创建一个XMPPConnection?使用单例?