靈活使用線程池 & 創建用戶賬號信息SQL數據庫--社交APP-筆記整理

靈活使用線程池 & 創建用戶賬號信息SQL數據庫--社交APP-筆記整理


不否認努力,繼續加油!

學習整理重點、盲區,筆記如下:乾乾巴巴,麻麻賴賴,一點都不圓潤……

  1. 本App實例是對“環信”的集成;對於框架之類的知識點在其他筆記中有更詳細的介紹;
  2. 本次筆記是簡潔版的聊天App,帶着強烈的興趣來學習本課程,灰溜溜的走,頭一回這麼強烈的抗拒某一個……;收錄了以下知識點:

1. 靈活使用線程池

  1. 聯網等操作需要開啓新線程,所以可以在工具類中提供一個 全局線程池

    private ExecutorService executors = Executors.newCachedThreadPool();
    public ExecutorService getGlobalThreadPool(){
         return executors;
    }
    
    //代碼中使用:
    getGolbalThreadPool().execute(new Runnable() { 
    	@Override 
    	public void run() {
    	……
    

2. 創建用戶賬號信息SQL數據庫

  1. 數據庫建表語句

    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);";
    }
    
  2. 用戶賬號表操作類

    // 添加用戶到數據庫
    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;
    }
    

    在這裏插入圖片描述
    但我真的好不喜歡這節課……

盲區

  1. 聲明:本博客根據尚硅谷項目實戰: 硅谷社交.學習整理;
  2. 對於 RadioButton 的選擇器要用 android:state_checked
  3. 通過 RadioButton 的點擊切換不同頁面(Fragment),可以參考其他幾個實例;
  4. 對於廣播的使用不熟悉;
  5. 對於SQL語句沒有系統的整理;
  6. 對於 DEBUG 的使用沒有進行過實踐,對於其數據走向也沒有分析過。
  7. 本實例充分體現了 三級緩存 的意義;一旦數據有變化,顯示網絡,本地數據庫,內存(UI);依次進行處理,如果只處理UI,那麼不是糊弄自己玩呢麼……
  8. 廣播的廣泛使用:比如:添加了好友之後,好友列表不會立即刷新(因爲刷新需要重新鏈接網絡),這時候可以使用廣播,通過接受廣播的形式處理;而不僅僅是做監聽,而且這時候監聽好使嗎?

其他筆記

金融App

  1. 金融APP01—頁面架構.
  2. 金融APP02—主頁及工具類創建
  3. 金融APP03—自定義 MyScrollView & 聯網加載數據的4種狀態的抽取及代碼優化
  4. 金融APP04—投資理財頁面實現
  5. 金融APP05—隨機飛入飛出&流式佈局自定義View的使用
  6. 金融APP06—調用系統拍照、圖庫選擇圖片並設置爲圓形

商城

Android項目實戰—— 商城APP.

新聞

Android項目實戰—— 新聞APP.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章