[英]Using android handler using a separate 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);
}
}
通過這種方式在后台Thread
內創建一個UI Handler
:
private static final Handler UI_HANDLER = new Handler(Looper.getMainLooper());
那么你可以send
郵件或post
一個Runnable
於UI線程。 要在活動中處理消息,您可以在活動中創建另一個處理程序,並覆蓋handleMessage
方法,如下所示:
@Override
public void handleMessage(Message inputMessage) {
if (message.what == YOUR_MESSAGE_CODE) {
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.