欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中Handler與Message的簡(jiǎn)單實(shí)例

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

Android中Handler與Message的簡(jiǎn)單實(shí)例

前言:

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

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

上一下效果圖:

分別是點(diǎn)擊button前后效果

   


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

Message:

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

Handler

Handler顧名思義就是處理者的意思,它主要是用于發(fā)送和處理消息的。發(fā)送消息一般是使用Handler的sendMessage()方法,而發(fā)出的消息經(jīng)過(guò)一系列地輾轉(zhuǎn)處理后,最終會(huì)傳遞到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這個(gè)整型敞亮,用于表示更新TextView這個(gè)動(dòng)作 
  public static final int UPDATE_TEXT = 1; 
 
  private TextView text; 
  private Button changeText; 
 
  //創(chuàng)建一個(gè)Handler 
  private Handler handler = new Handler() { 
 
    public void handleMessage(Message msg) { 
      switch (msg.what) { 
      case UPDATE_TEXT: 
        //在這里可以進(jìn)行UI操作 
        //對(duì)msg.obj進(jìn)行String強(qiáng)制轉(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)建一個(gè)message 
          //設(shè)置what字段的值為UPDATE_TEXT,主要是為了區(qū)分不同的message 
          //設(shè)置message.obj的內(nèi)容 
          //調(diào)用Handler的message對(duì)象 
          //handler中的handlermessage對(duì)象是在主線(xiàn)程中運(yùn)行的 
          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的使用,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

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

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

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

    Android中獲取IMEI碼的方法

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

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

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

    android studio 3.6 中配置svn的教程

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論