![](/img/trans.png)
[英]How to add a JProgressBar which works with a Timer in my code?
[英]Add a timer to my code
我想添加一個計時器,該計時器在計時器的每個滴答聲(1秒)上都會刷新。 如何在代碼中使用計時器?
以下是我的代碼:
LineRefresh.java :
package LineRefresh.xyz.com;
import java.util.Timer;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
public class LineRefresh extends Activity {
DrawView drawView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
drawView = new DrawView(this);
drawView.setBackgroundColor(Color.WHITE);
setContentView(drawView);
}
}
DrawView.java :
package LineRefresh.xyz.com;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class DrawView extends View {
Paint paint = new Paint();
public DrawView(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
paint.setColor(Color.BLACK);
canvas.drawLine(50, 200, 270, 200, paint);
}
}
您可以執行以下另一種方法:
Handler updateHandler;
@Override
public void onCreateBundle savedInstanceState) {
super.onCreate(savedInstanceState);
updateHandler = new Handler();
// Do this first after 1 second
updateHandler.postDelayed(RecurringTask, 1000);
}
Runnable RecurringTask = new Runnable() {
public void run() {
// Do whatever you want
// Call this method again every 30 seconds
updateHandler.postDelayed(this, 30000);
}
};
我在使用Timer / TimerTask解決方案將用戶線程編組到UI線程時遇到了一些麻煩,因此這又是一個對我有用的工作!
以下是Java的Timertask解決方案:
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
hereYourMethod();
}
}
};
timer.schedule(task, 1000,1000);// (the task, when to start, when to repeat)
一種替代方法是使用處理程序。
mHandler = new Handler(new Handler.Callback()
{
@Override
public boolean handleMessage(Message msg)
{
if(msg.what == REFRESH)
{
// TODO Refresh Code
return true;
}
return false;
}
});
mHandler.sendEmptyMessageDelayed(REFRESH, mMilliSecondsToRefresh);
然后,當您希望它停止時(這也應該放在onStop()中,這樣當您的應用未處於活動狀態時它不會在后台繼續):
mHandler.removeMessages(REFRESH);
您可以讓線程休眠1秒:
Thread.sleep(1000); //1000 milliseconds = 1 second
如果您使用的是Swing,則最好使用Swing計時器 : http : //download.oracle.com/javase/tutorial/uiswing/misc/timer.html
就您而言,也許您應該使用Timer : http : //download.oracle.com/javase/6/docs/api/javax/swing/Timer.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.