荐 灵活使用线程池 & 创建用户账号信息SQL数据库–社交APP-笔记整理

灵活使用线程池 & 创建用户账号信息SQL数据库–社交APP-笔记整理

  • 1. 灵活使用线程池
  • 2. 创建用户账号信息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.

本文地址:https://blog.csdn.net/liusaisaiV1/article/details/106476367

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐