使用android处理程序使用单独的处理程序

时间:2015-07-15 17:51:30

标签: android handler

我对以下场景中处理程序的使用存在疑问

我有一个活动类如下:

public class MyActivity extends Activity {

    ...
    ...

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)  {
       ...
    }
}

和BluetoothClientConnection类如下

public class BTClientConnection extends Thread {
    public void run {
        ...
    }
}

现在我想使用处理程序更新UI。我应该怎么做?我应该创建一个公共处理程序变量并直接从我的BluetoothClientConnection代码引用它吗?这是最佳实践,因为我将直接与MyActivity类耦合。

来自Gennadii Saprykin的答案应该是最终的代码

public class MyActivity extends Activity {

    ...
    private ActivityHandler activityhandler = new ActivityHandler();

    static class ActivityHandler extends Handler {
        @Override
        public void handleMessage(Message msg) {            

        } 
        ...
    }

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)  {
       ...
       BTClientConnection btClientConnection = new BTClientConnection(..);
       btClientConnection.start();
    }
}

public class BTClientConnection extends Thread {
    private static final Handler UI_HANDLER = new Handler(Looper.getMainLooper());

    public void run {
        Message message = new Message();
        UI_HANDLER.sendMessage(message);
    }
}

1 个答案:

答案 0 :(得分:0)

以这种方式在您的背景int(math.sqrt(num))+ 1)内创建用户界面i = 2 n = int(math.sqrt(num))+ 1) while i < n: if num % i == 0: return False i += 1 return True

Handler

然后您可以Thread消息或private static final Handler UI_HANDLER = new Handler(Looper.getMainLooper()); send到UI线程。要处理活动中的消息,您可以在活动中创建另一个处理程序,并覆盖post方法,如下所示:

Runnable