-
更新UI的幾種方法 1、activity.runOnuiThread 2、handler post 3、handler sendMessage 4、View.post查看全部
-
handler 是什么?查看全部
-
1.handler是什么:handler是android給我們提供用來更新UI的一套機制,也是一套消息處理的機制,我們可以發送消息,也可以通過它處理消息 2.android 在設計的時候,就封裝了一套消息創建 傳遞 處理機制,如果不遵循這樣的機制就沒有辦法更新UI信息,就會拋出異常信息查看全部
-
handler負責發送消息,Looper負責接收handler發送的消息,并且直接把消息傳回給handler自己 MessageQueue就是一個存儲消息的容器查看全部
-
更新UI操作實在主線程的消息隊列當中去輪回處理的查看全部
-
target:指明地址查看全部
-
handler:是android提供的更新UI的機制和消息處理機制查看全部
-
handler是:查看全部
-
tip1 private MyRunnable runnable = new MyRunnable; #main onClick(){ handler.removeCallbacks(runnable); }查看全部
-
step3 * use Thread + private handler = new Handler(){ ...do more... } + Message msg = handler.obtain(); msg.obj = person;/*Person person = new Person; person.age=23; person.name="nate";*/ handler.sendMessage(msg);查看全部
-
step2 *remove Thread *make MyHandler & private it class MyHanlder implment Handler{ --void run(){ ----do sth, like: imgView.setImg( images[index++] ); ----myhandler.post(); --} } private myhandler = new MyHandler; #main myhandler.post();查看全部
-
step1 private handler = new Handler(); \\ new Thread(){ --void run(){ ----Thread.sleep(1000); ----handler.post(); --} }查看全部
-
step0 new Thread(){ void run(){ textView.setText("aa"); } }.start(); //fail, cannot update UI with ThreadClass查看全部
-
非UI線程能否更新UI --->剛啟動的時候,立即在非UI線程更新->不報錯。 --->休眠2s鐘以后,更新——————>報錯 更新UI-->會調用checkForRelayout()方法 -->invalidate()方法-->invalidate(true)方法,關注viewParent-->ViewRootImpl是ViewParent的實現類 --->p.invalidateChild()-->查看ViewRootImpl.invalidateChild()-->checkThread()方法-->判斷UI線程是否是當前線程,不想等拋出異常。 ViewRootImpl是onResume()方法才會創建。所以onCreate()方法中要延遲才可以。 handleResumeActivity()方法---》viewManager.addView()-->ViewRootImpl初始化。查看全部
-
handler.sendMessage() handler.post(Runnable r)--->handler.sendMessage(),內部封裝成message(). activity.runOnUiThread()---->判斷Thread.currentThread()是否是UIThread.然后利用自身的Handler.sendMessage() view.post()------>ViewRootImpl.getRunQueue().post--->內部也是handler查看全部
舉報
0/150
提交
取消