我创建了一个类 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/