欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-21 19:15:35
灵活使用线程池 & 创建用户账号信息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;
    }
    

    荐
                                                        灵活使用线程池 & 创建用户账号信息SQL数据库--社交APP-笔记整理
    但我真的好不喜欢这节课……

盲区

  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