荐 灵活使用线程池 & 创建用户账号信息SQL数据库--社交APP-笔记整理
程序员文章站
2022-06-21 19:15:35
灵活使用线程池 & 创建用户账号信息SQL数据库--社交APP-笔记整理;高高兴兴来,失失望望走,总结笔记如下:...
灵活使用线程池 & 创建用户账号信息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.
本文地址:https://blog.csdn.net/liusaisaiV1/article/details/106476367