我会尝试在不粘贴任何代码的情况下设置问题,因为可能会更清楚。
我有一个带有一个切换按钮的 Android 应用程序。当 ToggleButton 为“ON”时,它会使用 AsyncTask 中的套接字开始通信;当 ToggleButton 为“OFF”时,它会停止通信。 我正在使用事件 setOnCheckedChangeListener 来检测按钮中的更改。
哪一种是对所有代码进行排序的正确方法?我是否在 UI 线程上设置侦听器,从 UI 调用 asyncTask 并从 asyncTask 返回我已建立连接的套接字? 一旦 ToggleButton 关闭,我需要知道哪个套接字已打开才能将其关闭...
我觉得有点乱,有更好的方法吗?
有多种可能的方法。您可以根据您的情况使用广播发送器和接收器。
步骤如下:
第 1 步:在 AsyncTask 中创建广播接收器以接收来自 Activity 的广播。
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("close_socket")) {
// close your socket here.
}
}
};
第 2 步:创建广播接收器后注册您的接收器。
IntentFilter filter = new IntentFilter("close_socket");
registerReceiver(receiver, filter);
第 3 步:从您的 Activity 发送广播以关闭套接字。
Intent intent = new Intent("close_socket");
SendBroadcast(intent);
无论您在何处注册广播接收器,它都会自动接收广播并关闭套接字。希望对你有帮助。