0

Androidアプリを開発していますが、UIスレッドであるActivityクラスから定期的に(1秒間に数回)コードを実行する必要があります。ここAndroidの反復タスクのような同様の問題が発生しましたが、必要なのは、アクティビティをリスナーとして設定し、何らかの方法でタイマーをリッスンして、Xミリ秒ごとにアクティビティがメソッドを実行するようにすることです。

このようなもの:

class myActivity extends Activity{
    //things

    //This method must be called every X milliseconds
    private repetitive_method(){
      ....
    }

    //more things
 }

これを行うための推奨される方法はありますか?

4

3 に答える 3

2

あなたの答えはそこにあります:

http://developer.android.com/resources/articles/timed-ui-updates.html

于 2012-04-08T02:22:01.547 に答える
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!");
}
于 2014-02-21T15:01:36.987 に答える
0

これは役立つかもしれません。mActivity が null かどうかを確認してから を呼び出すまでの間に、mActivity が null になる可能性があるという競合状態がまだあることに注意してくださいrunOnUiThread()

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;
    }
}
于 2012-04-08T05:54:20.283 に答える