Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android app 架構設計02

android app 架構設計02

編輯:關於Android編程

二:在開放的過程中,盡量把工具類,BaseActivity 放在指定的位置,

DateFormat
Bitmap
Notification
Shared Preference
Environment
Device

三:

2.2 Task管理

線程只是一種機制,保證我們要完成的任務不運行在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,有以下幾點需要注意:

-封裝了線程
讓調用者只關注自己的業務處理
保證順序鏈式地執行某一個任務
上一個任務的輸出,作為下一個任務的輸入
能暫停、恢復任何一個任務


四:

2.3 緩存設計

-把內存占用量大的對象存放在緩存中,如bitmap
利用了LruCache類來實現
利用了AsyncTask類來加載bitmap
不用再手動釋放bitmap內存,該操作有風險
不用再關心AbsListView的scroll狀態
關於緩存的更多詳細細節,請參考[ 請參考CoreLib工程中的cache包 ]。

這樣做,有什麼好處, 不用再手動釋放bitmap內在,該操作有風險,因為該bitmap是否有View引用,如果當一個View在試圖繪制一個已經回收的bitmap,這裡會拋出異常。

五:

2.4 線程管理

無消息循環的線程:

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,由它來處理消息,注意,這做的事情是運行在後台線程的。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved