我一直在讀我的java書中的線程,我想嘗試使用兩個連續的線程同時進行更新。使用線程更新兩個連續的文本瀏覽器
當然,雖然線程無法更新用戶界面。我已經使用了一些處理程序,但只是通過從一個類傳遞信息到另一個類來捕獲服務到活動的位置。
但這一定比這更簡單。
我假設我應該使用AsyncTask,但我想在每個字段中計數1-10,並且我不想繼續浸入和退出asynctask類。
任何指針讚賞
斯蒂芬
UPDATE
所以我做了一點嘗試多。我編寫了一個處理程序方法來處理髮送給它的任何消息。它檢查它應該更新的字段,然後在所述字段上執行setText。下面是代碼
Handler myHandler = new Handler(){
public void handleMessage(Message msg){
msg = Message.obtain();
Bundle bundle = msg.getData();
String fieldName = bundle.getString("fieldName");
int count = bundle.getInt("count");
if(fieldName=="text1"){
text1.setText(count);
}else{
text2.setText(count);
}
}
};
然後我在活動的onCreate這將啓動兩個線程一些代碼,每個線程通過與我詮釋計數到處理程序的消息。它還傳入一個TextView名稱,以便我的處理程序知道應該更新哪個文本視圖。下面是代碼...
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text1 = (TextView)findViewById(R.id.text1);
text2 = (TextView)findViewById(R.id.text2);
new Thread(){
public void run(){
for(int i=1;i<10;i++){
message = Message.obtain(myHandler);
Bundle bundle = new Bundle();
bundle.putCharSequence("fieldName", "text1");
message.setData(bundle);
myHandler.sendMessageDelayed(message, 1000);
}
}
}.start();
new Thread(){
public void run(){
for(int i=1;i<10;i++){
message = Message.obtain(myHandler);
Bundle bundle = new Bundle();
bundle.putCharSequence("fieldName", "text2");
message.setData(bundle);
myHandler.sendMessageDelayed(message, 1000);
}
}
}.start();
}
但我使用setText
05-17 17得到一個錯誤:13:00.013:ERROR/AndroidRuntime(966):android.content.res.Resources $ NotFoundException:字符串資源ID#0x0
任何想法?
「我認爲我應該使用AsyncTask,但是我想在每個字段中計數1-10,並且我不想繼續在asynctask類中進出。」 - 那是什麼意思? – CommonsWare 2011-05-16 19:39:36