0

我正在尝试在主要活动中实现 Timer()。但是,不知何故,它并没有像我预期的那样工作。我将向您展示关键代码部分。错误:图标未更改

public class X extends Activity {
       private Timer timer = new Timer () ;
       setContentView(R.layout.main);
       public void onCreate(Bundle a) {
              //..
              timer.scheduleAtFixedRate( new Device(),  1000, 1000  );

       }

}

public class Device extends TimerTask {
       Image e;
       View w;
       public void run() {
           e = ( ImageView ) w.findViewById(R.id.imageView1);
           if ( isVolited ( ))
                   e.setBackground(w.getResources().getDrawable(R.drawable.icon1));
               else
                   e.setBackground(w.getResources().getDrawable(R.drawable.icon2));

日志 :

 01-29 14:25:51.175: E/TabletStatusBar(2172): closing mini mode apps panel
 01-29 14:25:51.255: E/TabletStatusBar(2172): closing mini mode apps panel
 01-29 14:25:56.510: E/lights(2051): write_int failed to open /sys/class/sec/sec_touchkey/brightness
 01-29 14:25:59.105: E/lights(2051): write_int failed to open /sys/class/sec/sec_touchkey/brightness
 01-29 14:26:00.060: E/TODmobile(3509): onReceive action=android.intent.action.TIME_TICK
 01-29 14:26:00.060: E/TODmobile(3509): hour : 14    minute : 26
 01-29 14:26:00.060: E/DigitalClockWidget(3509): updateWidgets
 01-29 14:26:00.065: E/TODmobile(3509): hour : 14    minute : 26
 01-29 14:26:10.725: E/Watchdog(2051): !@Sync 504
4

2 回答 2

2

您不能从工作线程更新 UI 线程。您必须使用处理程序或 Aysn Task 来更新 UI 线程。

handler.post(new Runnable() {

                    @Override
                    public void run() {
                               e.setBackground(w.getResources().getDrawable(R.drawable.icon1));


                    }
                });
于 2013-01-29T12:26:57.597 回答
1

试试这个代码,它正在工作

Timer time = new Timer();
TimerTask doThis;

int delay = 1000; // delay for 5 sec.
int period = 1000; // repeat every sec.
doThis = new TimerTask() {
    public void run() {

        e = (ImageView) findViewById(R.id.imageView1);

        runOnUiThread(new Runnable() {
            public void run() {


                e.setImageResource(R.drawable.ic_launcher);

            }

        });

    }
};
time.scheduleAtFixedRate(doThis, delay, period);
于 2013-01-29T13:07:45.517 回答