天天看點

Android新浪微部落格戶端(四)——添加多個賬戶及認證

原文出自:方傑|  轉載請注明出處

最終效果示範:

該項目代碼已經放到github:

二.擷取使用者資訊并儲存資料庫

上面說到加載AuthActivity有兩種情況,其中一種就是授權成功回調,在授權回調成功後我們就開始通過微網誌API擷取使用者資訊了,然後儲存資料庫了。這一系列操作我采用主架構模式,将任務發送給MainService來處理。

對于這個任務的具體處理過程,先通過token擷取UID,再通過UID擷取UserInfo。UserInfo中值得注意的是UserIcon是Bitmap類型的,這裡涉及到一個通過url擷取Bitmap的方法,這裡就不細講了。

MainService.java中的doTask方法:

上面的微網誌API操作都是異步的操作是以同樣采取先請求,然後擷取的操作。這種方式在授權部分已經講的很清楚了。

然後就是儲存資料庫的操作,這裡都是最基本的資料庫使用方式了,就是有一點需要注意的是,UserIcon儲存的是BOLB二進制資料。

GetUserInfo.java   //利用微網誌API擷取使用者資訊的工具方法類

DBUserInfo.java  //操作使用者資訊的資料庫工具方法類

三.擷取所有授權使用者資訊并顯示在登入界面上

還記得在上面的AuthActivity中我們發送的GET_USERINFO_BY_TOKEN (擷取授權使用者資訊并儲存資料庫)這個任務,這個任務完成後,我們會在refresh()方法中跳到LoginActivity。在LoginActivity的初始時,我們會發送GET_USERINFO_IN_LOGIN(擷取所有授權使用者資訊),在做這個任務處理時也就是資料庫的操作。

其他:

講完上面這些,我突然想講講這個addActivty,reMoveActivty,getActivityByName

特别是reMoveActivty這個方法,我自己在做項目的時候就忘記了在每次完成任務時去删除這個Activity執行個體,導緻了這樣一個錯誤:

程式啟動的時候會到LoginActivity,這時候做了一次GET_USERINFO_IN_LOGIN,就把LoginAcivity的一個執行個體傳到activities中,當我再次添加一個授權使用者資訊,完成後再次跳到LoginActivity時,這時界面上就沒有任何顯示資訊。因為當第二次跳到LoginActivity時,再次傳一個LoginActivity的執行個體,而我在完成任務後refresh()時,重新整理的是第一次的LoginActivity執行個體,是以對第二次的LoginActivity當然是沒有顯示。

通過上面這三個方法的配合我們就可以由Activity向一些工具類方法傳遞Context上下文的參數,比如在建立資料庫時需要Context這個參數,還有在工具類中跳轉的時候也需要用到Context參數。雖然這種傳參可能會增加層與層之間的耦合度,但是我目前就這水準,也請大家給我指點。

 歡迎各位關注我的個人站點: 

繼續閱讀