Foursquare 原始碼研究之------登入續
上次說到了登入回撥方法onPostExecute,此方法是AsyncTask的方法,當doInBackground方法執行完後呼叫此方法來處理返回結果.在onPostExecute中主要根據登入結果來做不同的事情,登入成功://傳送登入廣播
sendBroadcast(new Intent(Foursquared.INTENT_ACTION_LOGGED_IN));
此廣播的訂閱時在Foursquared類中實現的,首先看此類Foursquared extends Application,Application是android專案執行的一個全域性的狀態 "Base class for those who need to maintain global application state". 可以在Manifest.xml中指定你自定義的application. 在此類中有一個LoggedInOutBroadcastReceiver 來處理接收到的廣播,然後廣播傳送一個message.此message對應有一個TaskHandler.在foursquare中他使用了
mTaskThread = new HandlerThread(TAG + "-AsyncThread");
mTaskThread.start();
mTaskHandler = new TaskHandler(mTaskThread.getLooper());
上面的方式來建立Handler. 是為了讓handler執行在新的執行緒中. 接下來看handleMessage方法對msg的處理.第一個switch case語句是MESSAGE_UPDATE_USER, 更新一下使用者的資訊.同時儲存在SharedPreferenses中.
接下來開始一個更新UI的Service foursquared.requestStartService(); 主要呼叫FoursquaredService類的updateWidgets方法來更新widget.也是在Foursquared類中來進行更新,看handleMessage():
case MESSAGE_START_SERVICE: //updateWidgets更新元件
Intent serviceIntent = new Intent(Foursquared.this, FoursquaredService.class);
serviceIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
startService(serviceIntent);
return;
啟動一個FoursquaredService.
接下來返回到主介面
// Launch the main activity to let the user do anything.
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
如果登入失敗:
sendBroadcast(new Intent(Foursquared.INTENT_ACTION_LOGGED_OUT));//傳送登出廣播.
NotificationsUtil.ToastReasonForFailure(LoginActivity.this, mReason);//根據不同的exception來提示失敗資訊
最後關閉進度條dismissProgressDialog().
到這裡登入就結束了.寫的比較亂.呵呵.
相關文章
- Foursquare 原始碼研究之---------使用者登入原始碼
- 騰訊遊戲掃碼登入原始碼遊戲原始碼
- spring security之 預設登入頁原始碼跟蹤Spring原始碼
- spring security 之自定義表單登入原始碼跟蹤Spring原始碼
- 直播原始碼,zabbix忘記登入密碼原始碼密碼
- 社會化登入分享-原始碼解析原始碼
- 遊戲陪玩原始碼的登入方式,簡訊驗證碼登入的實現遊戲原始碼
- 連續登入及其變種
- Spring Security原始碼分析六:Spring Social社交登入原始碼解析Spring原始碼
- Nginx原始碼研究之nginx限流模組詳解Nginx原始碼
- LIVE555原始碼研究之四:MediaServer (一)原始碼Server
- PHP原始碼研究PHP原始碼
- ICE原始碼研究原始碼
- uniapp 完成兩種方式登入 驗證碼登入 密碼登入APP密碼
- VasSonic原始碼之並行載入原始碼並行
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- 直播app原始碼,登入時自動輸入密碼/自動記住密碼APP原始碼密碼
- 直播app系統原始碼,簡單的登入介面(登入、註冊、記住密碼等按鍵)APP原始碼密碼
- 聊天平臺原始碼,登入時拼圖驗證原始碼
- 【Python】公眾號聚合登入軟體+原始碼Python原始碼
- 密碼登入密碼
- 影片直播原始碼,AndroidStudio登入頁面的切換原始碼Android
- 成品直播原始碼推薦,登入介面實現插入背景原始碼
- app直播原始碼,軟體登入時的背景圖更改APP原始碼
- 直播原始碼網站,新使用者登入時的註冊頁面和登入頁面原始碼網站
- 直播系統原始碼,自動登入及記住密碼實現原始碼密碼
- Oracle登入指令碼Oracle指令碼
- 微信掃碼登入
- 小視訊app原始碼,實現簡單的登入介面,輸入賬號密碼APP原始碼密碼
- 小程式之登入態
- 一對一視訊原始碼,登入時輸入密碼時的顯示密碼按鈕原始碼密碼
- Spring原始碼之Bean的載入(四)Spring原始碼Bean
- Spring原始碼之Bean的載入(二)Spring原始碼Bean
- Spring原始碼之Bean的載入(三)Spring原始碼Bean
- Spring原始碼之Bean的載入(一)Spring原始碼Bean
- HashMap原始碼分析,未完待續HashMap原始碼
- 【PHP7原始碼分析】PHP7原始碼研究之淺談Zend虛擬機器PHP原始碼虛擬機
- 2.CAS SSO單點登入服務端環境搭建之原始碼詳細解說服務端原始碼