国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android中Handle類的用法實例分析

2020-04-11 11:25:19
字體:
來源:轉載
供稿:網友

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

當我們在處理下載或是其他需要長時間執行的任務時,如果直接把處理函數放Activity的OnCreate或是OnStart中,會導致執行過程中整個Activity無響應,如果時間過長,程序還會掛掉。Handler就是把這些功能放到一個單獨的線程里執行,與Activity互不影響。

當用戶點擊一個按鈕時如果執行的是一個常耗時操作的話,處理不好會導致系統假死,用戶體驗很差,而Android則更進一步,如果任意一個Acitivity沒有響應5秒鐘以上就會被強制關閉,因此我們需要另外起動一個線程來處理長耗時操作,而主線程則不受其影響,在耗時操作完結發送消息給主線程,主線程再做相應處理。那么線程之間的消息傳遞和異步處理用的就是Handler。

以下模擬一個簡單的相冊查看器,每隔2秒自動更換下一張照片。

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();        }      }    }  });}

運行結果:

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莆田市| 贵德县| 广德县| 翼城县| 德州市| 沈丘县| 永泰县| 灌阳县| 望谟县| 竹溪县| 壶关县| 黄平县| 青海省| 宝应县| 黑龙江省| 德令哈市| 普宁市| 文昌市| 孝义市| 霸州市| 海阳市| 柳州市| 梨树县| 乌审旗| 油尖旺区| 福泉市| 乡宁县| 广水市| 永顺县| 濉溪县| 龙胜| 洛阳市| 崇礼县| 阳江市| 融水| 聂拉木县| 诸城市| 财经| 嘉黎县| 西吉县| 安丘市|