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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Handler总结

發布時間:2025/3/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Handler总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Handler學習小結,算是搞清楚了,得記下來

Handler主要用于異步消息的處理:當發送一個消息之后,首先進入一個消息隊列,發送消息的函數即可返回,而另外一個部分逐個的在消息隊列中將消息取出,然后對消息進行出來,就是發送消息和接收消息不是同步的處理。這種機制通常用來處理相對好是比較長的操作。(就如post方法是講Runnable對象添加到主線程中,通俗的說:這里的代碼中主要用Handler通知主線程,在主線程中處理異步結果,當線程中耗時任務完成后,例如數據準備,就通知主線程更新(如:更新UI),Handler的hand)

Handler 常用方法:

post(Runnable,long)

postDelayed(Runnable,long);

sendEmptyMessage(int What);

sendMessage(Message);

sendMessageAtTime(Message,long);

sendMessageDelayed(Message,long);

以上post方法允許你安排一個Runnable對象到主線程隊列 中,

sendMessage 方法,允許你安排一個帶數據的Message對象到隊列中,等待更新

Android代碼 ?
  • package?com.handler.test; ??
  • ??
  • import?android.app.Activity; ??
  • import?android.os.Bundle; ??
  • import?android.os.Handler; ??
  • import?android.os.Message; ??
  • import?android.util.Log; ??
  • import?android.view.View; ??
  • import?android.view.View.OnClickListener; ??
  • import?android.widget.Button; ??
  • import?android.widget.TextView; ??
  • ??
  • public?class?Handler1Activity?extends?Activity?{ ??
  • ????private?Button?button?=?null; ??
  • ????private?TextView?textview?=?null; ??
  • ????@Override ??
  • ????public?void?onCreate(Bundle?savedInstanceState)?{ ??
  • ????????super.onCreate(savedInstanceState); ??
  • ????????setContentView(R.layout.main); ??
  • ????????button?=?(Button)?findViewById(R.id.button); ??
  • ????????textview?=?(TextView)?findViewById(R.id.textview); ??
  • ????????button.setOnClickListener(new?OnClickListener()?{ ??
  • ???????????? ??
  • ????????????@Override ??
  • ????????????public?void?onClick(View?v)?{ ??
  • ????????????????new?Thread(thread).start(); ??
  • ????????????????try?{ ??
  • ????????????????????Thread.sleep(2000); ??
  • ????????????????????Log.i("Handler1Activity",?"主線程"); ??
  • ????????????????}?catch?(InterruptedException?e)?{ ??
  • ????????????????????//?TODO?Auto-generated?catch?block ??
  • ????????????????????e.printStackTrace(); ??
  • ????????????????} ??
  • ????????????} ??
  • ????????}); ??
  • ????} ??
  • ???? ??
  • ????private?Handler?handler?=?new?Handler(){ ??
  • ??
  • ????????@Override ??
  • ????????public?void?handleMessage(Message?msg)?{ ??
  • ????????????if(msg.what==1){ ??
  • ????????????????textview.setText("處理完成"); ??
  • ????????????????System.out.println("handler"+Thread.currentThread().getId()); ??
  • ????????????} ??
  • ????????} ??
  • ????}; ??
  • ???? ??
  • ????private?Thread?thread?=?new?Thread(){ ??
  • ??
  • ????????@Override ??
  • ????????public?void?run()?{ ??
  • ????????????//這里處理異步消息 ??
  • ????????????Log.i("Handler1Activity",?Thread.currentThread().getId()+"異步處理"); ??
  • ????????????handler.sendEmptyMessage(1); ??
  • ????????} ??
  • ????}; ??
  • }??
  • package com.handler.test;import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView;public class Handler1Activity extends Activity {private Button button = null;private TextView textview = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button = (Button) findViewById(R.id.button);textview = (TextView) findViewById(R.id.textview);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {new Thread(thread).start();try {Thread.sleep(2000);Log.i("Handler1Activity", "主線程");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}});}private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {if(msg.what==1){textview.setText("處理完成");System.out.println("handler"+Thread.currentThread().getId());}}};private Thread thread = new Thread(){@Overridepublic void run() {//這里處理異步消息Log.i("Handler1Activity", Thread.currentThread().getId()+"異步處理");handler.sendEmptyMessage(1);}}; }

    ?這里的

    Android代碼 ?
  • System.out.println("handler"+Thread.currentThread().getId());//handler1??
  • 轉載于:https://blog.51cto.com/haiyang714/742617

    總結

    以上是生活随笔為你收集整理的Handler总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。