1. 程式人生 > >利用Handler迴圈呼叫自身,實現線上程中無限迴圈的功能

利用Handler迴圈呼叫自身,實現線上程中無限迴圈的功能

如果某個功能需要實現無限迴圈,肯定是不能在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執行一次。