簡體   English   中英

Android Timer和timerTask錯誤

[英]Android Timer and timerTask error

這段代碼在代碼上也添加了一個計時器。.但是當我涉及到計時器代碼時,我的代碼有問題...我將如何在我的代碼的for循環內改進計時器的代碼。您了解我的代碼..並改進了我的代碼..謝謝!!!

package com.thesis.americansignlanguage;

import java.io.IOException;
import java.io.InputStream;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class AlphabetCompareClass extends Activity {



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.alphabetcompare);
    final String get;
    Bundle gotWord = getIntent().getExtras();
    get = gotWord.getString("key");
    TextView Word = (TextView)findViewById(R.id.textView1);
    final ImageView img = (ImageView)findViewById(R.id.image_alpha) ;
    Word.setText(get);

    for(int x = 0; x > gotWord.getString("key").length(); x++) {

        final InputStream is;
            Timer timer = new Timer();
            TimerTask timertask = new TimerTask() {

                @Override
                public void run() {
                    try {
                        is = getResources().getAssets().open(get + ".png");
                        Bitmap bitmap = BitmapFactory.decodeStream(is);
                        img.setImageBitmap(bitmap);

                    } catch (IOException e) {
                        return;
                    }


                }
            };
        }


    };

}

TimerTask在另一個線程上運行。 只能從ui線程更新ui。

這個img.setImageBitmap(bitmap); 應該在ui線程上執行

使用runOnUiThread 您還可以使用Handler 我也不了解for循環的需要。

runOnUiThread(new Runnable() {
@Override
public void run() {
    img.setImageBitmap(bitmap);
}
});

當前代碼中發現兩個問題:

第一:不使用timer實例安排timerTask 這樣做:

timer.schedule(timertask, 500, 3000);

第二:TimerTask run方法中從非UI線程更新UI

使用runOnUiThreadHandlerTimerTask運行方法更新Ui

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM