如何对ToggleButton监听器和AsyncTask调用进行排序?

问题描述 投票:0回答:1

我会尝试在不粘贴任何代码的情况下设置问题,因为可能会更清楚。

我有一个带有一个切换按钮的 Android 应用程序。当 ToggleButton 为“ON”时,它会使用 AsyncTask 中的套接字开始通信;当 ToggleButton 为“OFF”时,它会停止通信。 我正在使用事件 setOnCheckedChangeListener 来检测按钮中的更改。

哪一种是对所有代码进行排序的正确方法?我是否在 UI 线程上设置侦听器,从 UI 调用 asyncTask 并从 asyncTask 返回我已建立连接的套接字? 一旦 ToggleButton 关闭,我需要知道哪个套接字已打开才能将其关闭...

我觉得有点乱,有更好的方法吗?

android sockets android-asynctask toggle listener
1个回答
1
投票

有多种可能的方法。您可以根据您的情况使用广播发送器和接收器。

步骤如下:

第 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);

无论您在何处注册广播接收器,它都会自动接收广播并关闭套接字。希望对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.