亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

android中Handle類的用法實(shí)例分析

 更新時(shí)間:2015年09月25日 11:36:25   作者:Ruthless  
這篇文章主要介紹了android中Handle類的用法,以實(shí)例形式較為詳細(xì)的分析了基于Handle類線程執(zhí)行的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了android中Handle類的用法。分享給大家供大家參考。具體如下:

當(dāng)我們?cè)谔幚硐螺d或是其他需要長(zhǎng)時(shí)間執(zhí)行的任務(wù)時(shí),如果直接把處理函數(shù)放Activity的OnCreate或是OnStart中,會(huì)導(dǎo)致執(zhí)行過(guò)程中整個(gè)Activity無(wú)響應(yīng),如果時(shí)間過(guò)長(zhǎng),程序還會(huì)掛掉。Handler就是把這些功能放到一個(gè)單獨(dú)的線程里執(zhí)行,與Activity互不影響。

當(dāng)用戶點(diǎn)擊一個(gè)按鈕時(shí)如果執(zhí)行的是一個(gè)常耗時(shí)操作的話,處理不好會(huì)導(dǎo)致系統(tǒng)假死,用戶體驗(yàn)很差,而Android則更進(jìn)一步,如果任意一個(gè)Acitivity沒(méi)有響應(yīng)5秒鐘以上就會(huì)被強(qiáng)制關(guān)閉,因此我們需要另外起動(dòng)一個(gè)線程來(lái)處理長(zhǎng)耗時(shí)操作,而主線程則不受其影響,在耗時(shí)操作完結(jié)發(fā)送消息給主線程,主線程再做相應(yīng)處理。那么線程之間的消息傳遞和異步處理用的就是Handler。

以下模擬一個(gè)簡(jiǎn)單的相冊(cè)查看器,每隔2秒自動(dòng)更換下一張照片。

main.xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" 
  android:gravity="center">
  <ImageView android:id="@+id/imageView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:src="@drawable/p1"
    android:gravity="center" />
</LinearLayout>

HandleActivity類:

package com.ljq.handle;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
public class HandleActivity extends Activity {
  private ImageView imageView = null;
  private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
      switch (msg.what) {
      case 0:
        imageView.setImageResource(R.drawable.p1);
        break;
      case 1:
        imageView.setImageResource(R.drawable.p2);
        break;
      case 2:
        imageView.setImageResource(R.drawable.p3);
        break;
      case 3:
        imageView.setImageResource(R.drawable.p4);
        break;
      }
      super.handleMessage(msg);
    }
  };
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    imageView = (ImageView) findViewById(R.id.imageView);
    thread.start();
  }
  int what = 0;
  Thread thread = new Thread(new Runnable() {
    public void run() {
      while (true) {
        handler.sendEmptyMessage((what++) % 4);
        try {
          Thread.sleep(2000);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  });
}

運(yùn)行結(jié)果:

希望本文所述對(duì)大家的Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論