編輯:關於Android編程
二:在開放的過程中,盡量把工具類,BaseActivity 放在指定的位置,
DateFormat
Bitmap
Notification
Shared Preference
Environment
Device
三:
線程只是一種機制,保證我們要完成的任務不運行在UI線程(也就是說不阻塞UI),完成的任務才是我們關注的核心,因此,我們可以通過設計,把線程封裝,讓使用者根本感覺不到是線程,他只用關心他要做的事情就行了。
這裡,我們可以設計一種”異步鏈式調用”的框架,把線程進行了封裝。使用都只需要這樣用:
1 2 3 4 5
new TaskManager() .next(task1) .next(task2) .next(task3). .execute();
這裡,task1, task2, task3是順序執行的,舉個例子:我們要訪問網絡,取得一個圖片,使用這個TaskManager我們需要3個task,
task1:顯示一個ProgressDialog。
task2:訪問網絡,創建bitmap。
task3:關閉對話框,顯示bitmap。
這一點,可以參考CoreLib工程中的task.TaskManager類。
關於TaskManager,有以下幾點需要注意:
-封裝了線程
讓調用者只關注自己的業務處理
保證順序鏈式地執行某一個任務
上一個任務的輸出,作為下一個任務的輸入
能暫停、恢復任何一個任務
四:
-把內存占用量大的對象存放在緩存中,如bitmap
利用了LruCache類來實現
利用了AsyncTask類來加載bitmap
不用再手動釋放bitmap內存,該操作有風險
不用再關心AbsListView的scroll狀態
關於緩存的更多詳細細節,請參考[ 請參考CoreLib工程中的cache包 ]。
這樣做,有什麼好處, 不用再手動釋放bitmap內在,該操作有風險,因為該bitmap是否有View引用,如果當一個View在試圖繪制一個已經回收的bitmap,這裡會拋出異常。
五:1 2 3 4 5 6
new Thread(null, new Runnable() { public void run() { // Do you works. } }, "Thread_name_xxx").start();
什麼情況下使用這種線程:
-做完一件事情就結束,這件事發生頻率不高,比如從SD card中讀取圖片數據
不需要復用線程
在使用線程,最好給線程加上名字,這樣利用高度與跟蹤。
這樣的線程擁有消息循環,當消息隊列中沒有消息時,這個線程會被掛起。我們要做一件事情時,只需要給它發送一個消息就行了。
這種情況通常是為了復用線程,不用頻繁創建線程,比如音樂播放器程序,專門啟動一個有消息循環的線程來獲得音樂的專輯圖片。
我們通常還要創建一個與這個線程的消息循環(Looper)相關聯的Handler,由它來處理消息,注意,這做的事情是運行在後台線程的。
新建一個Android工程。 一 布局 先看效果圖: 打開main.xml修改內容如下:
本節引言: 在Android基礎入門教程——8.3.1 三個繪圖工具類詳解的Paint方法中有這樣一個方法: setMaskFilte
本篇博客主要給大家演示如何一步一步地創建一個類似於下圖展示的這麼一個UI界面: 一、准備圖片資源 第二步:ImageButton設置 源
安裝Android Studio相關教程(不翻牆版)這篇文章是當年自己剛用android studio時寫的,主要是當時同班同學問題太多,後來我直接寫了這篇。現在發上來給
前言在前2篇文章中,我們都說到著色器,且在第二篇中正式說到,這著色器只能