亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Android面試??虷andler詳解

難度中級
時長 2小時 0分
學習人數
綜合評分9.30
169人評價 查看評價
9.7 內容實用
9.3 簡潔易懂
8.9 邏輯清晰
  • ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal為解決多線程程序的并發問題提供了一種新的思路。使用這個工具類可以很簡潔地編寫出優美的多線程程序。 ThreadLocal很容易讓人望文生義,想當然地認為是一個“本地線程”。其實,ThreadLocal并不是一個Thread,而是Thread的局部變量,也許把它命名為ThreadLocalVariable更容易讓人理解一些。 當使用ThreadLocal維護變量時,ThreadLocal為每個使用該變量的線程提供獨立的變量副本,所以每一個線程都可以獨立地改變自己的副本,而不會影響其它線程所對應的副本。 從線程的角度看,目標變量就象是線程的本地變量,這也是類名中“Local”所要表達的意思。
    查看全部
  • 在非ui線程中如果讓線程休眠,那么就不能更新ui,如果不讓線程休眠,又可以更新ui,原因我們可以從源碼的角度去觀察,但是不建議使用,最好還是通過使用handler的機制來實現對ui的更新
    查看全部
  • 更新ui的四種方法: 第一種: private void handle1(){ handler.post(new Runnbale(){ public void run(){ textView.setText("ok"); } }); } 第二種:直接在子線程中使用sendMessage,在創建handler對象的時候,在其中的handleMessage方法中去更新ui private void handler2(){ handler.sendEmptyMessage(1); } 第三種: private void handler3(){ runOnUiThread(new Runnable(){ public void run(){ textView.setText("ok"); } }) } 第四種: private void viewUi(){ textView.post(new Runnable(){ public void run(){ textView.setText("ok"); } }) }
    查看全部
  • 重點: handler負責發送消息,Looper負責接收handler發送的消息,并直接把消息回傳給handler自己,MessageQueue就是一個存儲消息的容器
    查看全部
  • google為什么只設計了handler來解決更新ui的問題? 最根本的目的就是解決多線程并發問題,假設如果在一個Activity當中,有多個線程去更新ui,并且都沒有加鎖機制,那么就會出現更新界面錯亂,但是如果都進行加鎖處理的話,又會導致性能下降 因此,產生了這種handler的更新機制,根本不用去關心多線程的問題,所有的更新ui的操作,都是在主線程的消息隊列當中去輪詢處理的
    查看全部
  • 通過 handler來實現sendMessage的方法的步驟: 1.創建一個handler的對象,并在其中重寫handlerMessage的方法,并在其中更新ui private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { extView.setText("" + msg.arg1);};}; 2.創建一個Thread類,在其中的run()方法中初始化一個message,并為message來賦值,并調用handler的sendMessage的方法 new Thread() { public void run() { try { Thread.sleep(2000); Message message = new Message(); message.arg1 = 88; handler.sendMessage(message); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }; 這樣,執行這個線程的時候就會通過sendMessage的方法將message參數傳遞過去,并在上面的初始化handler的時候接受到參數,并實現更新ui
    查看全部
  • 通過handler來實現圖片定時輪播的代碼: public class MainActivity extends Activity { private Handler handler = new Handler(); private ImageView imageView; // 將我們保存在文件夾中的三張圖片進行了實例化 private int[] images = { R.drawable.image1, R.drawable.image2, R.drawable.image3 }; // 創建的下標,用來實現當前是哪張圖片顯示 private int index; // 創建了一個我們自己寫的Runnable的對象 private MyRunnable myRunnbale = new MyRunnable(); class MyRunnable implements Runnable { @Override public void run() { // TODO Auto-generated method stub index++; index = index % 3; imageView.setImageResource(images[index]); // 通過handler的postDelayed的方法,進行定時的執行run方法中的代碼 handler.postDelayed(myRunnbale, 1000); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textView1); imageView = (ImageView) findViewById(R.id.imageView1); // 在主線程中執行上面的操作 handler.postDelayed(myRunnbale, 1000); } }
    查看全部
  • handler的四種使用的方法: sendMessage sendMessageDelayed post(Runnable) postDelayed(Runnable,long)
    查看全部
  • new Thread() { public void run() { try { Thread.sleep(1000); handler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // 更新文本信息 // 此時直接在這里更新ui的時候,程序將會直接崩潰掉 textView.setText("更新了"); } }); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }; }.start(); 從上面的方法中我們可以知道,如果想直接更新ui,我們需要在Thread的run方法中通過 handler.post()的方法來實現,而post方法中的參數是一個new Runnable(){public void run(){} ,然后我們在這個run方法中去更新ui,這才是正確的方法
    查看全部
  • 說明:如果我們直接在一個Activity中new一個Thread,并在其中的run方法中去更新ui,那么此時這個程序是會直接崩潰掉的,也就是說,我們不能直接在非ui線程中去更新ui,需要使用到Handler的機制才能實現我們的效果:
    查看全部
  • 為什么需要使用handler: Android在設計的時候,就封裝了一套消息創建,傳遞,處理機制,如果不遵循這樣的機制的話,就沒有辦法更新ui信息,也就是不使用handler會拋出異常消息
    查看全部
    0 采集 收起 來源:Handler是什么

    2016-02-02

  • 什么是handler: handler是android給我們提供用來更新UI的一套機制,也是一套消息處理的機制,我們可以發送消息,也可以通過它來處理消息
    查看全部
    0 采集 收起 來源:Handler是什么

    2016-02-02

  • handler 負責發送消息, looper負責接收handler發送的消息,并直接把消息回傳給handler自己。MessageQueue就是一個存儲消息的容器
    查看全部
  • handler是android給我們提供用來更新UI的一套機制,也是一套消息處理的機制,我們可以發送消息,也可以通過它處理消息
    查看全部
    0 采集 收起 來源:Handler是什么

    2016-01-31

  • 為什么要用handler?
    查看全部
    0 采集 收起 來源:Handler是什么

    2016-01-30

舉報

0/150
提交
取消
老師告訴你能學到什么?
通過本課程,你將學到: 1、什么是Handler 2、如何使用Handler 3、Handler的原理是什么 4、如何定義一個與線程相關的Handler 5、Android更新UI的幾種方式 6、非UI線程真的不能更新UI嗎 7、Handler使用過程中遇到的問題

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!