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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liusaisaiV1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值