利用Handler迴圈呼叫自身,實現線上程中無限迴圈的功能
阿新 • • 發佈:2019-02-18
如果某個功能需要實現無限迴圈,肯定是不能在UI執行緒中執行的,想到的第一種辦法肯定是放在新建的執行緒裡。
但是開闢新執行緒是需要消耗系統資源的,因為線上程之間切換需要花時間。
所以可以利用下面的程式碼來實現這個功能。
private Runnable mAction = new Runnable() { @Override public void run() { if (isContinue) { pageHandler.sendEmptyMessage(position); // 設定迴圈顯示 position = (position + 1) % views.size(); } // 在run()方法內呼叫自身,這樣就可以實現迴圈 pageHandler.postDelayed(mAction, 1000); } }; Handler pageHandler = new Handler() { @Override public void handleMessage(Message msg) { viewPager.setCurrentItem(msg.what); super.handleMessage(msg); } };
然後在程式碼裡面呼叫一次
pageHandler.postDelayed(mAction, 1000);
就可以了。這樣以後利用自身呼叫,run裡面的程式碼每1s執行一次。