我正在开发一个Android应用程序,我需要定期(每秒几次)从UI线程,Activity类执行一些代码。 我已经看到类似问题Android repetitive task,但我需要的是将我的Activity设置为监听器并以某种方式监听计时器,以便活动每执行一个X毫秒的方法。
这样的事情:
class myActivity extends Activity{
//things
//This method must be called every X milliseconds
private repetitive_method(){
....
}
//more things
}
是否有一些推荐的方法可以做到这一点?
答案 0 :(得分:2)
答案 1 :(得分:0)
这可能会有所帮助。请注意,仍然存在竞争条件,在检查它是否为空并且调用runOnUiThread()
之间,mActivity可能变为null。
class UpdaterThread extends Thread {
/** Frequency / sleep duration in milliseconds */
public static final int FREQUENCY = 250;
private volatile boolean mFinished;
private Activity mActivity;
public UpdaterThread(Activity activity) {
mActivity = activity;
}
public void run() {
while (!mFinished) {
try {
if (mActivity != null) {
// Your method.
mActivity.runOnUiThread(repetitive_method());
}
Thread.sleep(FREQUENCY);
} catch (InterruptedException ignored) {}
}
}
public void quit() {
mFinished = true;
}
}
答案 2 :(得分:0)
试试这个......
Timer myTimer;
@Override
protected void onStart() {
super.onStart();
myTimer= new Timer();
//this will update every minute
myTimer.scheduleAtFixedRate(new UpdateMyTimerTask(), 0,
60000);
}
public class UpdateMyTimerTask extends TimerTask {
@Override
public void run() {
//your method
printAndroidLabel();
}
}
@Override
protected void onStop() {
super.onStop();
//stop timer
myTimer.cancel();
}
public void printAndroidLabel(){
System.out.println("Hi Android!");
}