編輯:關於Android編程
本文實例講述了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程序設計有所幫助。
Unity3d Android SDK接入解析(一)
一、前言論學習心態:每當進入一個新的工作環境,處於一種新的領域時,人總是會變得急功近利,特別是當任務緊急時,人總是會想著不斷的從網上搜尋答案,不斷的去尋問他人,十足的拿來
android項目手機衛士來電顯示號碼歸屬地
昨日實現了360手機衛士的來電顯示歸屬地的功能,具體的功能就是當來電的時候,顯示當前號碼的歸屬地,學習之後發現操作非常的簡單,具體實現代碼如下:AddressServic
android發送短信例子
Android應用開發中我們常常需要發送手機短信。這對於android平台來說,是最簡單不過的功能了,無需太多代碼,也無需自定義代碼,只需要調用android提供的消息管
android使用自定義字體
前言 Android有自己的默認字體,但是有時候我們並不想使用它的默認字體,我們想使用諸如楷體,隸書等字體,那麼該怎麼去做呢?本文就是說明該如何使用
Android編程之Fragment使用動畫造成Unknown animation name: objectAnimator異常
在為Fragment做切換動畫,啟動後遇到了一個異常: Caused b