handler實現定時任務功能,每4秒輪播圖播映

             咱們知道handler的功能有兩個,一個是實現定時任務,另外一個是實現主線程和子線程的信息通訊,尤爲是安卓中耗時操做不能在主線程進行,更新界面操做不能在子線程進行,在這種需求背景下,因而出現了handler+thread的搭配實現子線程讀取網絡數據,讀取完通知主線程更新UI。不過我這一篇寫的是handler的定時任務功能。java

          首先要了解重點的方法handler類中的postDelayed(Runnable r,long delaymillis)方法。這個方法的做用是延遲delaymillis毫秒執行一次Runnable對象中的run方法部分的代碼,把它寫成遞歸的形式就能無限循環下去執行r的run方法代碼。此時runnable並無新開一個線程,它仍是在handler所在的線程中執行。android

下面是我作的輪播圖的小例子的所有代碼,在個人手機上運行沒有任何問題。網絡

圖片:app

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView;

public class handlerImage extends Activity {

	ImageView iView;
	Handler myhandler;
	myRun runnable = new myRun();
	int img[] = { R.drawable.a, R.drawable.b, R.drawable.timg };//三張圖片
	int i = 1;
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.img);
		iView = (ImageView) findViewById(R.id.imageView1);
		myhandler = new Handler();
		myhandler.postDelayed(runnable, 2000);
	}

	class myRun implements Runnable {
		@Override
		public void run() {
			// TODO Auto-generated method stub
			iView.setImageResource(img[i % 3]);
			i++;
			myhandler.postDelayed(runnable, 4000);//每4000毫秒執行一次run方法
		}
	}
}

另外附上xmlide

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

   大學畢業沒多久,又是第一次接觸handler,瞭解還不深,若是有錯誤但願你們在評論區指正。post

相關文章
相關標籤/搜索