0

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

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

哪一种是对所有代码进行排序的正确方法?我是否在 UI 线程上设置侦听器,从 UI 调用 asyncTask 并从 asyncTask 返回与我建立连接的套接字女巫?一旦切换按钮关闭,我将需要知道女巫插座是否打开以关闭它......

对我来说看起来有点乱,有没有更好的方法呢?

4

1 回答 1

1

可以有几种可能的方式。您可以针对您的情况使用广播发送方和接收方。

下面提到的步骤:

第 1 步:在您的 AsyncTask 中创建一个广播接收器以接收来自您的活动的广播。

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 步:从您的活动发送广播以关闭套接字。

Intent intent = new Intent("close_socket");
SendBroadcast(intent);

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

于 2013-10-30T12:40:39.053 回答