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

Android中Handler與Message的簡單實例

 更新時間:2017年08月18日 17:28:04   投稿:lqh  
這篇文章主要介紹了Android中Handler與Message的簡單實例的相關(guān)資料,這里提供實例來說明線程Handler與message 的結(jié)合使用,需要的朋友可以參考下

Android中Handler與Message的簡單實例

前言:

雖然筆者已經(jīng)學(xué)習(xí)了Android的AsyncTask來實現(xiàn)一部消息的處理。但是在android的學(xué)習(xí)中,經(jīng)常會在一些demo中看到Handler與Message的一些使用,所以Handler與Message的學(xué)習(xí)也是有必要了。至于學(xué)多少,筆者還是比較堅持自己的看法,“用多少,學(xué)多少”,畢竟已經(jīng)有了AsyncTask如此方便的東西,Handler與Message也不是那么必不可缺了。(如此文的簡單了解一下還是不需要花太多時間的)

此實例是在handler中更新textview的內(nèi)容,新手讀者可能會問為什么不直接在oncreate中一行解決呢?還是主要是需求問題,倘若我們需要在子線程中從網(wǎng)上獲取內(nèi)容,然后更新到textview中,那么直接寫在主線程中不合理的。但是由于此實例主要是一個參考作用,并且讓它更能讓新手理解,所以并沒有寫從網(wǎng)絡(luò)獲取內(nèi)容的代碼了。(直接在子線程中是不能執(zhí)行更新UI的操作的,程序會崩潰)

上一下效果圖:

分別是點擊button前后效果

   


好了,直接看一下概念與代碼:

Message:

Message是在線程之間傳遞的消息,它可以在內(nèi)部攜帶少量的信息,用于再不同線程之間交換數(shù)據(jù)。除了what字段,還可以用arge1和arg2字段來攜帶一些整型數(shù)據(jù),使用obj字段攜帶一個Object對象。

Handler

Handler顧名思義就是處理者的意思,它主要是用于發(fā)送和處理消息的。發(fā)送消息一般是使用Handler的sendMessage()方法,而發(fā)出的消息經(jīng)過一系列地輾轉(zhuǎn)處理后,最終會傳遞到Handler的handleMessage()方法中。

MainActivity:

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 
 
public class MainActivity extends Activity implements OnClickListener { 
 
  //定義UPDATE_TEXT這個整型敞亮,用于表示更新TextView這個動作 
  public static final int UPDATE_TEXT = 1; 
 
  private TextView text; 
  private Button changeText; 
 
  //創(chuàng)建一個Handler 
  private Handler handler = new Handler() { 
 
    public void handleMessage(Message msg) { 
      switch (msg.what) { 
      case UPDATE_TEXT: 
        //在這里可以進行UI操作 
        //對msg.obj進行String強制轉(zhuǎn)換 
        String string=(String)msg.obj; 
        text.setText(string); 
        break; 
      default: 
        break; 
      } 
    } 
 
  }; 
 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    text = (TextView) findViewById(R.id.text); 
    changeText = (Button) findViewById(R.id.change_text); 
    changeText.setOnClickListener(this); 
  } 
 
  @Override 
  public void onClick(View v) { 
    switch (v.getId()) { 
    case R.id.change_text: 
      new Thread(new Runnable() { 
        @Override 
        public void run() { 
          //創(chuàng)建一個message 
          //設(shè)置what字段的值為UPDATE_TEXT,主要是為了區(qū)分不同的message 
          //設(shè)置message.obj的內(nèi)容 
          //調(diào)用Handler的message對象 
          //handler中的handlermessage對象是在主線程中運行的 
          String string="Nice to meet you"; 
          Message message = new Message(); 
          message.what = UPDATE_TEXT; 
          message.obj=string; 
          handler.sendMessage(message); 
        } 
      }).start(); 
      break; 
    default: 
      break; 
    } 
  } 
 
} 

activity_main:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" > 
 
  <Button 
    android:id="@+id/change_text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Change Text" /> 
 
  <TextView 
    android:id="@+id/text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:text="Hello world" 
    android:textSize="20sp" /> 
 
</RelativeLayout> 

以上就是Android中Handler與Message的使用,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 詳解Android v1、v2、v3簽名(小結(jié))

    詳解Android v1、v2、v3簽名(小結(jié))

    這篇文章主要介紹了詳解Android v1、v2、v3簽名(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Android中獲取IMEI碼的方法

    Android中獲取IMEI碼的方法

    本篇文章是對在Android中獲取IMEI碼的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • Android RxJava異步數(shù)據(jù)處理庫使用詳解

    Android RxJava異步數(shù)據(jù)處理庫使用詳解

    RxJava是一種異步數(shù)據(jù)處理庫,也是一種擴展的觀察者模式。對于Android開發(fā)者來說,使用RxJava時也會搭配RxAndroid,它是RxJava針對Android平臺的一個擴展,用于Android 開發(fā),它提供了響應(yīng)式擴展組件,使用RxAndroid的調(diào)度器可以解決Android多線程問題
    2022-11-11
  • android studio 3.6 中配置svn的教程

    android studio 3.6 中配置svn的教程

    這篇文章主要介紹了android studio 3.6 配置svn的教程,本文所用的as版本是3.6.1,通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • 基于flutter?sound插件實現(xiàn)錄音與播放功能

    基于flutter?sound插件實現(xiàn)錄音與播放功能

    這篇文章主要介紹了基于flutter?sound插件實現(xiàn)錄音與播放功能,介紹了如何錄音,如何播放本地和遠程音頻文件,以及如何實現(xiàn)動畫,在錄制完音頻文件后如何上傳,這些都是我們平常使用這個功能會遇到的問題。在使用的過程中遇到的問題也有列出,需要的朋友可以參考下
    2022-05-05
  • Android 定時器實現(xiàn)圖片的變換

    Android 定時器實現(xiàn)圖片的變換

    這篇文章主要介紹了Android 定時器實現(xiàn)圖片的變換的相關(guān)資料,利用到定時器和handler,message的結(jié)合實現(xiàn)改功能,需要的朋友可以參考下
    2017-08-08
  • Android中Retrofit+OkHttp進行HTTP網(wǎng)絡(luò)編程的使用指南

    Android中Retrofit+OkHttp進行HTTP網(wǎng)絡(luò)編程的使用指南

    Retrofit和OkHttp都是Square在GitHub上開源的第三方HTTP支持包,兩個包可以搭配使用,本文即是來講解Android中Retrofit+OkHttp進行HTTP網(wǎng)絡(luò)編程的使用指南:
    2016-07-07
  • Android打印機--小票打印格式及模板設(shè)置實例代碼

    Android打印機--小票打印格式及模板設(shè)置實例代碼

    這篇文章主要介紹了Android打印機--小票打印格式及模板設(shè)置實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Android自定義View的實現(xiàn)方法實例詳解

    Android自定義View的實現(xiàn)方法實例詳解

    本文通過實例代碼給大家詳細介紹了Android自定義View的實現(xiàn)方法,需要的朋友可以參考下
    2017-09-09
  • Android實現(xiàn)雙擊TitleBar回頂部的功能示例代碼

    Android實現(xiàn)雙擊TitleBar回頂部的功能示例代碼

    一個簡單易用的導(dǎo)航欄TitleBar,可以輕松實現(xiàn)IOS導(dǎo)航欄的各種效果,下面這篇文章主要給大家介紹了關(guān)于Android如何實現(xiàn)雙擊TitleBar回頂部功能的相關(guān)資料,文中給出了詳細的示例代碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09

最新評論