最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

前言:

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

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

上一下效果圖:

分別是點(diǎn)擊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: 
        //在這里可以進(jìn)行UI操作 
        //對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)建一個message 
          //設(shè)置what字段的值為UPDATE_TEXT,主要是為了區(qū)分不同的message 
          //設(shè)置message.obj的內(nèi)容 
          //調(diào)用Handler的message對象 
          //handler中的handlermessage對象是在主線程中運(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的使用,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Android實(shí)現(xiàn)簡單旋轉(zhuǎn)動畫

    Android實(shí)現(xiàn)簡單旋轉(zhuǎn)動畫

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡單旋轉(zhuǎn)動畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 使用Flutter實(shí)現(xiàn)一個走馬燈布局的示例代碼

    使用Flutter實(shí)現(xiàn)一個走馬燈布局的示例代碼

    這篇文章主要介紹了使用 Flutter 實(shí)現(xiàn)一個走馬燈布局的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Jetpack Compose圖片組件使用實(shí)例詳細(xì)講解

    Jetpack Compose圖片組件使用實(shí)例詳細(xì)講解

    在Compose中,圖片組件主要有兩種,分別是顯示圖標(biāo)的Icon組件和顯示圖片的Image組件,當(dāng)我們顯示一系列的小圖標(biāo)的時候,我們可以使用Icon組件,當(dāng)顯示圖片時,我們就用專用的Image組件
    2023-04-04
  • Android基礎(chǔ)控件(EditView、SeekBar等)的使用方法

    Android基礎(chǔ)控件(EditView、SeekBar等)的使用方法

    這篇文章主要介紹了Android基礎(chǔ)控件的屬性及使用方法,介紹了基礎(chǔ)控件有TextView、ImageView、Button、EditView等,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Android實(shí)現(xiàn)2048小游戲

    Android實(shí)現(xiàn)2048小游戲

    這篇文章主要為大家介紹了Android實(shí)現(xiàn)2048小游戲的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • 詳解Android 進(jìn)程

    詳解Android 進(jìn)程

    這篇文章主要介紹了Android 進(jìn)程的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Android開發(fā),感興趣的朋友可以了解下
    2020-08-08
  • Android Studio使用Profiler來完成內(nèi)存泄漏的定位

    Android Studio使用Profiler來完成內(nèi)存泄漏的定位

    這篇文章主要介紹了Android Studio使用Profiler來完成內(nèi)存泄漏的定位,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-03-03
  • Android編程中activity的完整生命周期實(shí)例詳解

    Android編程中activity的完整生命周期實(shí)例詳解

    這篇文章主要介紹了Android編程中activity的完整生命周期,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android編程中activity的原理與具體用法,需要的朋友可以參考下
    2015-12-12
  • Android Compose自定義TextField實(shí)現(xiàn)自定義的輸入框

    Android Compose自定義TextField實(shí)現(xiàn)自定義的輸入框

    眾所周知Compose中默認(rèn)的TextField和OutlineTextField樣式并不能滿足所有的使用場景,所以自定義TextField就成了必備技能。本文將自定義TextField實(shí)現(xiàn)自定義的輸入框,感興趣的可以了解一下
    2022-03-03
  • 在Android開發(fā)中使用自定義組合控件的例子

    在Android開發(fā)中使用自定義組合控件的例子

    這篇文章主要介紹了在Android開發(fā)中使用自定義組合控件的例子,作者根據(jù)例子總結(jié)到了實(shí)現(xiàn)父類的構(gòu)造方法等基本要點(diǎn),具有一定參考價值,需要的朋友可以參考下
    2016-02-02

最新評論

汉源县| 历史| 靖安县| 泗水县| 舟曲县| 卓资县| 利津县| 卫辉市| 长葛市| 工布江达县| 夹江县| 威远县| 英德市| 武义县| 甘孜| 兴安盟| 定边县| 乐都县| 万州区| 道孚县| 鱼台县| 苍南县| 马边| 湘阴县| 曲阳县| 榕江县| 阜宁县| 双鸭山市| 南康市| 凤山市| 新泰市| 侯马市| 西充县| 榆树市| 松滋市| 塔河县| 蓬溪县| 木里| 乐清市| 湖南省| 永宁县|