2022年2月28日 星期一

Android Studio - 每秒被重複調用的方法(五十四)

Android Studio - 每秒被重複調用的方法(五十四):

由於經常會使用 Timer 來做事情,所以將每秒被重複調用的方法記錄下來,方便將來使用。

Handler Count Down 每秒調用的程式
  • 操作系統:Windows 7 64-bit 版本
  • 開發環境:Android Studio 4.0.1 版本
  • 原程式:C:\Development\Development_Android\Android_Project\DIY-Android-009-18 Handler 1sTimer
  • 程式:C:\Development\Development_Android\Android_Project\ DIY-Android-009-18 Handler 1sTimer

Thread 線程每秒被重複調用範例:

        new Thread(new Runnable() {

            @Override

            public void run() {

                while (true) {

                    // write code

                    System.out.println(duration);

                    duration--;

                    try { Thread.sleep(1000);

                    } catch (InterruptedException e) {

                        e.printStackTrace();

                    }

                }

            }

        }).start();


Timer,TimerTask 每秒被重複調用一次範例:

        Timer timer = new Timer();

        TimerTask t = new TimerTask() {

            @Override

            public void run() {

                System.out.println(duration);

                duration--;

            }

        };

        timer.scheduleAtFixedRate(t,1000,1000);


Count Down Timer 每秒被重複調用一次範例:

        new CountDownTimer(10000, 1000) {

            public void onTick(long millisUntilFinished) {

                // write code

                mtv_text.setText("Seconds remaining: " + millisUntilFinished / 1000);

            }

 

            public void onFinish() {

                mtv_text.setText("Counter Down Finished");

            }

        }.start();


Handler 每秒被重複調用一次範例:

public class MainActivity extends AppCompatActivity {

 

    private TextView mtv_text;

    private Handler countDownTimer;

    private Runnable runnable;

    private int duration = 10;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mtv_text = (TextView) findViewById(R.id.tv_text);

 

        countDownTimer = new Handler(Looper.getMainLooper());

        runnable=new Runnable() {

            @Override

            public void run() {

                mtv_text.setText("Count Down Timer Per Second \n" + duration +" second");

                duration--;

                countDownTimer.postDelayed(this,1000);

            }

        };

 

        countDownTimer.post(runnable);

    }

 

}


2022年 2月 28日(Mon)天氣報告
氣溫:49.0°F / 9.0°C @ 07:00
風速:每小時 11公里
降雨機會:100%
相對濕度:百分之 96%
天氣:雨

沒有留言:

張貼留言