編輯:關於android開發
Handler使用介紹:
Handler根據接收的消息,處理UI更新。Thread線程發出消息,通知Handler更新UI。
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x1:
view.invalidate();
break;
}
super.handleMessage(msg);
}
};
class UpdateViewThread implements Runnable {
public void run() {
while (!Thread.currentThread().isInterrupted()) {
Message message = new Message();
message.what = 0x1;
mHandler.sendMessage(message);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
}
(1)對於線程中的刷新一個View為基類的界面,可以使用postInvalidate()方法在線程中來處理,其中還提供了一些重寫方法比如postInvalidate(int left,int top,int right,int bottom) 來刷新一個矩形區域,以及延時執行,比如postInvalidateDelayed(long delayMilliseconds)或postInvalidateDelayed(long delayMilliseconds,int left,int top,int right,int bottom) 方法,其中第一個參數為毫秒
(2)可以在一個線程的run方法中調用Handler對象的postMessage或sendMessage方法來實現,Android程序內部維護著一個消息隊列,會進行輪詢處理。
(3)在Android中每一個Thread都跟著一個Looper,Looper可以幫助Thread維護一個消息隊列,但是Looper和Handler沒有什麼關系,從源碼中可以看到Android提供了一個Thread繼承類HanderThread可以幫助我們處理,在HandlerThread對象中可以通過getLooper方法獲取一個Looper對象控制句柄,我們可以將這個Looper對象映射到一個Handler中來實現一個線程同步機制,Looper對象的執行需要進行初始化,可以調用Looper.prepare,使用Looper.release方法釋放資源。
(4)對於Android中Handler可以傳遞一些內容,通過Bundle對象可以封裝String、Integer以及Blob二進制對象,我們通過在線程中使用Handler對象的sendEmptyMessage或sendMessage方法來傳遞一個Bundle對象到Handler處理器。對於Handler類提供了重寫方法handleMessage(Message msg) 來判斷,通過msg.what來區分每條信息。將Bundle解包來實現Handler類更新UI線程中的內容實現控件的刷新操作。相關的Handler對象有關消息發送sendXXX相關方法如下,同時還有postXXX相關方法,一個為發送後直接返回,一個為處理後才返回。
(5)在Android中提供了一種有別於線程的處理方式,就是Task以及AsyncTask,從源碼中可以看到是針對Concurrent的封裝,開發人員可以方便的處理這些異步任務。
FloatingActionButton增強版,一個按鈕跳出多個按鈕--第三方開源--FloatingActionButton,floatingactionbutton&
Adapter,adapter是什麼意思Adapter是連接後端數據和前端顯示的適配器接口,是數據和UI之間的一個重要的紐帶。在常見的View等地方都需要用到Adapte
Android 操作數據庫的框架——greenDAO的學習 greenDAO的使用 簡介 官網給出如下介紹: greenDAO是一個對象關系映射(ORM)的框架,能夠
Android React Native組件的生命周期 和Android一樣,React的組件也有對應的生命周期。Android React Native組件的生命周