92手95口98全身走什么意思,ass中国女明星裸体pic,KTV里给800小费能睡吗
  • <s id="my6qw"><code id="my6qw"></code></s>
  • 武漢北大青鳥中南軟件學院
    400-027-0822

    Android開發——消息處理傳遞機制

    2018-07-03供稿中心: 北大青鳥

    摘要: 在程序開發時,對于比較耗時的操作,通常會為其開辟*個單獨的線程來執行,以盡可能減少用戶的等待時間。在Android中,默認情況下,所有的操作都是在主線程中進行的,主線程負責與UI相關的事件。而在自己新建的線程中,不能對UI進行操作。因此Android提供了消息處理傳遞機制來解決這*問題。

    在程序開發時,對于比較耗時的操作,通常會為其開辟*個單獨的線程來執行,以盡可能減少用戶的等待時間。在Android中,默認情況下,所有的操作都是在主線程中進行的,主線程負責與UI相關的事件。而在自己新建的線程中,不能對UI進行操作。因此Android提供了消息處理傳遞機制來解決這*問題。

    Message,消息類。存放于MessageQueue中,包含數據類型,用戶自定義的消息代碼等。

    MessageQueue,消息隊列。在MessageQueue中,存放的消息按照FIFO(先進先出)的原則執行。

    Handler,消息發送類。發送或者處理Message對象到所在線程的MessageQueue中。

    Looper,循環者。用來循環讀取存放于MessageQueue中的消息。*個線程對應*Looper,*Looper對象對應*MessageQueue。Android中新增的線程是沒有開啟消息循環的,但是主線程除外。系統自動為主線程創建Looper對象。

    *:在非主線程中創建Looper

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    class LooperThread extends Thread {

          public Handler mHandler;//聲明*個Handler對象

             

          public void run() {

              Looper.prepare(); //初始化Looper對象         

              mHandler = new Handler() {

                  public void handleMessage(Message msg) { //重寫方法

       

      // process incoming messages here

                  }

              };

              Message m=mHandler.obtainMessage();//獲取*個消息

              m.what=0x11;設置Message的what屬性的值

              mHandler.sendMessage();//發送消息         

              Looper.loop();//啟動Looper

          }

    }

    二:*個打地鼠游戲

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    public class MainActivity extends Activity {

      private int i = 0// 記錄其打到了幾只地鼠

      private ImageView mouse; // 聲明*個ImageView對象

      private Handler handler; // 聲明*個Handler對象

      public int[][] position = new int[][] { { 231325 }, { 424349 },

          521256 }, { 543296 }, { 719245 }, { 832292 },

          772358 } }; // 創建*個表示地鼠位置的數組

       

      @Override

      public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mouse = (ImageView) findViewById(R.id.imageView1); // 獲取ImageView對象

        mouse.setOnTouchListener(new OnTouchListener() {

       

          @Override

          public boolean onTouch(View v, MotionEvent event) {

            v.setVisibility(View.INVISIBLE); // 設置地鼠不顯示

            i++;

            Toast.makeText(MainActivity.this"打到[ " + i + " ]只地鼠!",

                Toast.LENGTH_SHORT).show(); // 顯示消息提示框

            return false;

          }

        });

       

        handler = new Handler() {

          @Override

          public void handleMessage(Message msg) {

            int index = 0;

            if (msg.what == 0x101) {

              index = msg.arg1; // 獲取位置索引值

              mouse.setX(position[index][0]); // 設置X軸位置

              mouse.setY(position[index][1]); // 設置Y軸位置

              mouse.setVisibility(View.VISIBLE); // 設置地鼠顯示

            }

            super.handleMessage(msg);

          }

       

        };

        Thread t = new Thread(new Runnable() {

       

          @Override

          public void run() {

            int index = 0// 創建*個記錄地鼠位置的索引值

            while (!Thread.currentThread().isInterrupted()) {

              index = new Random().nextInt(position.length); // 產生*個隨機數

              Message m = handler.obtainMessage(); // 獲取*個Message

              m.what = 0x101// 設置消息標識

              m.arg1 = index; // 保存地鼠標位置的索引值

              handler.sendMessage(m); // 發送消息

       

              try {

                Thread.sleep(new Random().nextInt(500) + 500); // 休眠*段時間

              catch (InterruptedException e) {

                e.printStackTrace();

              }

       

            }

       

          }

       

        });

        t.start(); // 開啟線程

       

      }

       

    }

     

    關于我們
    公司簡介
    課程專業
    師資力量
    教學管理
    聯系方式
    青鳥課程
    ACCP
    學士后Java
    BENET
    啟蒙星IT工程師基礎課程
    UI設計
    回到首頁 92手95口98全身走什么意思,ass中国女明星裸体pic,KTV里给800小费能睡吗