靈活使用線程池 & 創建用戶賬號信息SQL數據庫--社交APP-筆記整理
不否認努力,繼續加油!
學習整理重點、盲區,筆記如下:乾乾巴巴,麻麻賴賴,一點都不圓潤……
- 本App實例是對“環信”的集成;對於框架之類的知識點在其他筆記中有更詳細的介紹;
- 本次筆記是簡潔版的聊天App,帶着強烈的興趣來學習本課程,灰溜溜的走,頭一回這麼強烈的抗拒某一個……;收錄了以下知識點:
1. 靈活使用線程池
-
聯網等操作需要開啓新線程,所以可以在工具類中提供一個 全局線程池,
private ExecutorService executors = Executors.newCachedThreadPool(); public ExecutorService getGlobalThreadPool(){ return executors; }
//代碼中使用: getGolbalThreadPool().execute(new Runnable() { @Override public void run() { ……
2. 創建用戶賬號信息SQL數據庫
-
數據庫建表語句
public class UserAccountTable { public static final String TAB_NAME = "tab_account"; public static final String COL_NAME = "name"; public static final String COL_HXID = "hxid"; public static final String COL_NICK = "nick"; public static final String COL_PHOTO = "photo"; public static final String CREATE_TAB = "create table " + TAB_NAME + " (" + COL_HXID + " text primary key," + COL_NAME + " text," + COL_NICK + " text," + COL_PHOTO + " text);"; }
-
用戶賬號表操作類
// 添加用戶到數據庫 public void addAccount(UserInfo user) { // 獲取數據庫對象 SQLiteDatabase db = mHelper.getReadableDatabase(); // 執行添加操作 ContentValues values = new ContentValues(); values.put(UserAccountTable.COL_HXID, user.getHxid()); values.put(UserAccountTable.COL_NAME, user.getName()); values.put(UserAccountTable.COL_NICK, user.getNick()); values.put(UserAccountTable.COL_PHOTO, user.getPhoto()); db.replace(UserAccountTable.TAB_NAME, null, values); }
// 根據環信id獲取所有用戶信息 public UserInfo getAccountByHxId(String hxId) { // 獲取數據庫對象 SQLiteDatabase db = mHelper.getReadableDatabase(); // 執行查詢語句 String sql = "select * from " + UserAccountTable.TAB_NAME + " where " + UserAccountTable.COL_HXID + "=?"; Cursor cursor = db.rawQuery(sql, new String[]{hxId}); UserInfo userInfo = null; if(cursor.moveToNext()) { userInfo = new UserInfo(); // 封裝對象 userInfo.setHxid(cursor.getString(cursor.getColumnIndex(UserAccountTable.COL_HXID))); userInfo.setName(cursor.getString(cursor.getColumnIndex(UserAccountTable.COL_NAME))); userInfo.setNick(cursor.getString(cursor.getColumnIndex(UserAccountTable.COL_NICK))); userInfo.setPhoto(cursor.getString(cursor.getColumnIndex(UserAccountTable.COL_PHOTO))); } // 關閉資源 cursor.close(); return userInfo; }
但我真的好不喜歡這節課……
盲區
- 聲明:本博客根據尚硅谷項目實戰: 硅谷社交.學習整理;
- 對於 RadioButton 的選擇器要用
android:state_checked
; - 通過 RadioButton 的點擊切換不同頁面(Fragment),可以參考其他幾個實例;
- 對於廣播的使用不熟悉;
- 對於SQL語句沒有系統的整理;
- 對於 DEBUG 的使用沒有進行過實踐,對於其數據走向也沒有分析過。
- 本實例充分體現了 三級緩存 的意義;一旦數據有變化,顯示網絡,本地數據庫,內存(UI);依次進行處理,如果只處理UI,那麼不是糊弄自己玩呢麼……
- 廣播的廣泛使用:比如:添加了好友之後,好友列表不會立即刷新(因爲刷新需要重新鏈接網絡),這時候可以使用廣播,通過接受廣播的形式處理;而不僅僅是做監聽,而且這時候監聽好使嗎?
其他筆記
金融App
- 金融APP01—頁面架構.
- 金融APP02—主頁及工具類創建
- 金融APP03—自定義 MyScrollView & 聯網加載數據的4種狀態的抽取及代碼優化
- 金融APP04—投資理財頁面實現
- 金融APP05—隨機飛入飛出&流式佈局自定義View的使用
- 金融APP06—調用系統拍照、圖庫選擇圖片並設置爲圓形
商城
Android項目實戰—— 商城APP.
新聞
Android項目實戰—— 新聞APP.