android中Handle類的用法實例分析
本文實例講述了android中Handle類的用法。分享給大家供大家參考。具體如下:
當我們在處理下載或是其他需要長時間執(zhí)行的任務時,如果直接把處理函數(shù)放Activity的OnCreate或是OnStart中,會導致執(zhí)行過程中整個Activity無響應,如果時間過長,程序還會掛掉。Handler就是把這些功能放到一個單獨的線程里執(zhí)行,與Activity互不影響。
當用戶點擊一個按鈕時如果執(zhí)行的是一個常耗時操作的話,處理不好會導致系統(tǒng)假死,用戶體驗很差,而Android則更進一步,如果任意一個Acitivity沒有響應5秒鐘以上就會被強制關閉,因此我們需要另外起動一個線程來處理長耗時操作,而主線程則不受其影響,在耗時操作完結發(fā)送消息給主線程,主線程再做相應處理。那么線程之間的消息傳遞和異步處理用的就是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程序設計有所幫助。
相關文章
Android應用中使用ContentProvider掃描本地圖片并顯示
這篇文章主要介紹了Android應用中使用ContentProvider掃描本地圖片并顯示的方法,比調用本地圖庫的方法更加靈活和可定制,需要的朋友可以參考下2016-04-04Android ViewPager實現(xiàn)智能無限循環(huán)滾動回繞效果
這篇文章主要為大家詳細介紹了Android ViewPager實現(xiàn)智能無限循環(huán)滾動回繞效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07Android實現(xiàn)動態(tài)自動匹配輸入內容功能
這篇文章主要為大家詳細介紹了Android實現(xiàn)動態(tài)自動匹配輸入內容功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06Android實現(xiàn)滑動折疊Header全流程詳解
這篇文章主要介紹了Android實現(xiàn)滑動折疊Header,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-11-11