多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Android 關于非主線程不能操作UI的認識

Android 關于非主線程不能操作UI的認識

來源:程序員人生   發布時間:2014-11-07 09:11:54 閱讀次數:3485次

Android在利用里顯示Dialog是個很簡單的事情,但是1直沒試過在Service里面顯示Dialog。根據之前的經驗UI操作要在主線程,本地的服務Service是主線程里沒錯,但是遠程service里面顯示Dialog,聽起來是否是就應當沒有在主線程里面了呢?

        嘗試1下就知道了,寫了個AIDL的調用,client端去調用AIDL,在Service這邊就是去顯示1個Dialog。AIDL的部份就疏忽了。Service這邊的代碼就和Activity上顯示dialog1樣。

AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setTitle("TEST"); builder.setMessage("test"); builder.show();

固然dialog要setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);

結果呢,悲劇了。

Can't create handler inside thread that has not called Looper.prepare()
甚么意思呢,主觀理解,要顯示個Dialog需要有消息循環的支持,給它1個消息循環就行了唄。但是,問題來了。。。 這個進程產生在哪一個線程上呢,后來調試發現原來每次binder調用過來都會有1個線程出現,而且還是每次都是不1樣的,估計是從1個線程池里面拿的。

那怎樣給這個線程加上looper呢,沒辦法只能自己開1個線程了,果然在1個帶looper的線程里去顯示dailog貌似就沒問題了。


那末問題又來了,為何顯示Dialog需要looper的支持呢?

看代碼:

原來Dialog有1個

private final Handler mHandler = new Handler();
還有1個

mListenersHandler = new ListenersHandler(this);
看起來這兩個Handler都是長在當前這個線程上的,那就明白了為何show Dialog1定要looper了吧。


最后還有1個問題,1直說UI操作必須要在主線程,那上面說的這個情況就有點奇怪了,顯現Service是遠程的,顯示dialog又是Service的1個子線程,跟主線程有半毛錢關系嗎?費解了,以我個人理解,這個非主線程不操作UI看來其實不是絕對的吧。

再仔細想一想,之前有看到過,其實不管是Dialog還是Acitivty本質上都是通過WindowManager往window上加了1個view(ViewRoot),所有的view不多是只屬于1個client,各個client都在這個window上分了1杯羹,那末,有多個線程會去更新各自的view也就不奇怪了。只是每個View本身只能有1個線程來操作罷了。這就是我對非主線程不能操作UI的認識,不知道是否是正確。









生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 一区二区视频免费观看 | 亚洲欧美日韩综合二区三区 | 中文字幕亚洲欧美 | 国产二三区| 最新福利在线 | 午夜视频www| 欧美另类久久久精品 | 欧美一级毛片高清免费观看 | 色综合欧美 | 在线成人免费观看国产精品 | 国产成人精品一区二区三区 | 高清在线观看视频 | 亚洲图片校园另激情类小说 | 欧美视频三级 | 多人伦交性欧美精品欧 | 欧美啊v在线 | 真人性做爰aa毛片免费视频观看 | 最近2019中文字幕免费看最新 | 国产成人精品久久一区二区三区 | 欧美14videosex性欧美成人 | 国产精品v免费视频 | 好大好湿好硬顶到了好爽在 | 天堂色| 可以在线观看的黄色网址 | 国产精品久久久久影院色老大 | 久久久久这里只有精品 | 操操爱 | 色综合网亚洲精品久久 | 亚洲一区二区三区高清视频 | 亚洲综合第一欧美日韩中文 | 中文字幕一区二区三区有限公司 | 欧美日韩亚洲高清不卡一区二区三区 | 国产精品久久久久影视不卡 | 日韩欧美一区二区三区在线视频 | 国产中文字幕在线视频 | 国产精品1区 2区 3区 | 日韩欧美一区二区中文字幕 | 午夜久久久久久亚洲国产精品 | 亚欧精品一区二区三区 | 日本一区精品久久久久影院 | 性生交酡 |