日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android内部通信handler

發(fā)布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android内部通信handler 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是handler?

handler主要用在用戶同自己創(chuàng)建的線程進行通信,andorid應(yīng)用程序在主線程中會維護一個消息隊列,通過Message對象在線程間進行通信.在handler內(nèi)部的handlerMessage中處理消息請求

其實學(xué)習(xí)過VC++的朋友應(yīng)該可以很好的理解handler,類似于VC++中的消息處理

?

Message對象都都存儲了什么?

一共有4個參數(shù),arg1,arg2,obj,what

arg1和arg2 是int類型,可以通過成員方法setData和getData訪問進行修改

obj ,object類型,可以存儲任意類型,比如放一個對象,一個int值,也就是消息中的附加數(shù)據(jù)

what,int類型,就是用戶定義的消息類型碼,可以通過what判斷是什么消息

?

我們來做個例子,這個例子有一個TextView顯示進度和完成及停止的內(nèi)容,一個ProgressBar來顯示進度,兩個Button,用于開始和停止

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/LinearLayout1"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.ssln.handler.MainActivity" ><TextViewandroid:id="@+id/tvMsg"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView" /><ProgressBarandroid:id="@+id/progbar"style="?android:attr/progressBarStyleHorizontal"android:layout_width="match_parent"android:layout_height="wrap_content" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/btnstart"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="開始" /><Buttonandroid:id="@+id/btnstop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="停止" /></LinearLayout></LinearLayout>

MainActivity.java

package com.ssln.handler;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.ProgressBar; import android.widget.TextView;public class MainActivity extends Activity {private final int UPDATEMSG = 1; // 更新消息類型private final int COMPLETEMSG=2; // 完成消息private final int STOPMSG=3; // 停止消息private final int MAXVALUE = 100; // ProgressBar最大值private boolean isStop=false; //是否停止 @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final TextView tvMsg = (TextView) findViewById(R.id.tvMsg);final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progbar);Button btnstart = (Button) findViewById(R.id.btnstart);Button btnstop=(Button)findViewById(R.id.btnstop);// 設(shè)置最大值 progressBar.setMax(MAXVALUE);// 初始化一個handler,用于更新textview和progressBarfinal Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch(msg.what){case UPDATEMSG:tvMsg.setText(msg.obj.toString() + "%");progressBar.setProgress(Integer.valueOf(msg.obj.toString()));break;case COMPLETEMSG:tvMsg.setText("完成了更新操作");break;case STOPMSG:tvMsg.setText("停止了更新操作");break;}}};//停止操作btnstop.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {isStop=true;}});//開始 使用BUTTON來創(chuàng)建一個新線程,來更新數(shù)據(jù)btnstart.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {new Thread() {public void run() {Message msg;for (int i = 0; i < MAXVALUE; i++) {if(isStop){break;}// 循環(huán)發(fā)送消息,實現(xiàn)內(nèi)部通信msg = new Message();msg.what = UPDATEMSG;msg.obj = i + 1;handler.sendMessage(msg);try {// 睡眠一段時間Thread.sleep(150);} catch (InterruptedException e) {e.printStackTrace();}}if(!isStop){//發(fā)送完成消息msg = new Message();msg.what =COMPLETEMSG ;handler.sendMessage(msg);}else{//發(fā)送停止消息msg = new Message();msg.what =STOPMSG ;handler.sendMessage(msg);isStop=false;}}}.start();}});}}

當(dāng)點擊開始按鈕后,每間隔150毫秒,會發(fā)送一個updatemsg,其中的obj為當(dāng)前的進度值,進度條設(shè)置進度為obj,textview會顯示百分比



當(dāng)進度到達(dá)100%的時候,會發(fā)送一個COMPLETEMSG 完成消息,用于TextView更新顯示



如果在更新過程中,點擊了停止,那開始的線程中就會跳出循環(huán),并發(fā)送一個 STOPMSG 停止消息


轉(zhuǎn)載于:https://www.cnblogs.com/alwaysfirst/p/4006838.html

總結(jié)

以上是生活随笔為你收集整理的android内部通信handler的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 超碰影院在线 | 潮喷失禁大喷水无码 | 超爽视频| 奶波霸巨乳一二三区乳 | 男人的天堂毛片 | 欧洲免费毛片 | 最近最新中文字幕 | 久久久久久久毛片 | 黄色三级视频在线观看 | 91久久色| 国产一级做a爰片在线看免费 | 日韩精品成人无码专区免费 | 成年人免费小视频 | 欧美手机在线视频 | 国产精品久久久精品三级 | 色女人综合 | 亚洲视频在线播放免费 | 四虎免费视频 | 8x8ⅹ成人永久免费视频 | 久久久精品国产sm调教 | 日本色区 | 亚洲va欧美va天堂v国产综合 | √天堂8资源中文在线 | 福利免费观看 | 911香蕉视频| 国产影视av| 亚洲福利视频一区二区三区 | 粉嫩av网站| 中文字幕第22页 | 欧美性理论片在线观看片免费 | 日韩免费视频一区二区视频在线观看 | 请用你的手指扰乱我吧 | 久久精品亚洲a | 天天摸天天碰 | 午夜激情免费视频 | 亚洲中文一区二区三区 | 久久福利国产 | 三级黄网 | 国产精品婷婷午夜在线观看 | 欧美熟妇交换久久久久久分类 | 欧美色狠| 波多野结衣乳巨码无在线观看 | 欧美一区二区三区在线视频 | 精品国产一区二 | 九九精品视频免费 | 国产毛片电影 | 欧美.www | 久久视频免费在线观看 | 交专区videossex另类 | 国产高潮国产高潮久久久 | 国产午夜精品无码 | 一本色道久久88加勒比—综合 | 国产日本一区二区三区 | 国产理论片 | 久久大奶| 色在线播放 | 亚洲va在线∨a天堂va欧美va | 国产一区91| www.污在线观看 | 精品久久久久一区二区国产 | 亚洲天堂网站 | 秋霞毛片少妇激情免费 | 丁香婷婷在线观看 | 日韩在线视频观看 | 久草国产在线视频 | 黄色片网站在线免费观看 | 成人福利av | 国产av毛片| 57pao成人国产永久免费视频 | 日本αv | 成人深夜在线观看 | 污导航在线 | 黄色网址在线免费播放 | 真人真事免费毛片 | 国产天堂资源 | 免费极品av一视觉盛宴 | 久久久久久久久久久国产 | 中文字幕在线免费看线人 | 亚洲色图另类图片 | 涩涩成人 | 欧美成人三级在线播放 | 日韩性在线 | 亚洲国产毛片aaaaa无费看 | 久久久涩 | 天天久久| 欧美日韩偷拍视频 | www.白浆 | 午夜影院在线视频 | 欧美成人午夜视频 | 天堂岛av| 人妻丰满熟妇aⅴ无码 | 国产福利久久久 | 色综合天天 | 激情中文网 | 免费av网页 | 成人免费毛片嘿嘿连载视频 | 久久亚洲精少妇毛片午夜无码 | 看毛片网站 | 天天干一干 |