图像
- 图片大小计算
分辨率x图片位深(kb)
1
360px*360px*4 bytes-per-pixel * 50 images = 506 kiB * 50 images = 24.7 MiB
内存优化
首次获取图片的宽高, 计算取样比例
然后加载真实图片
1 | val point = Point() |
分辨率x图片位深(kb)
1 | 360px*360px*4 bytes-per-pixel * 50 images = 506 kiB * 50 images = 24.7 MiB |
内存优化
首次获取图片的宽高, 计算取样比例
然后加载真实图片
1 | val point = Point() |
前言: 喜马拉雅手机版和车机版两者接入方式不同, 手机版xmly提供了SDK+API的方式, 车机版只有API的方式, 区别在客户端API接入和服务端API接入
先找喜马拉雅工作人员申请app_key ,app_secret ,如果是服务端接入的话还需要server_auth_key 一般一周内即可申请到
确定host和path, 目前喜马拉雅有三种host
https://api.ximalaya.com/iot/openapi-smart-device-api
https://api.ximalaya.com/iot/openapi-smart-device-pay-api
path根据业务区分
GET/POST
确定公共参数和业务参数
GET请求参数拼接在url后, POST请求放在body中
文档上这么写的, 实际上部分接口POST依然拼接在url后
计算sig, 联系喜马工程师获取demo, 以testSignature方法为准
公共数据采用客户端授权access_token, 私有数据如用户信息采用服务端授权access_token
增快访问速度
1.打开ipaddress.com网站
2.输入GitHub.com或者fastly.net查询IP
3.管理员打开C:\Windows\System32\drivers\etc\hosts
4.199.232.69.194 fastly.net
Q: github.io打不开
A: 按如上配置自己的域名
1 | 140.82.114.4 github.com |
git config –global user.email “email”
git config –global user.name “username”
git config user.name
git config user.email
git config –global alias.co “checkout” //使用git co 代替 checkout
git config –global alias.st status
git config –global –list
git clone git://
cd /data/user_de/0/com.android.providers.media/databases
cd /data/data/com.android.providers.media/databases
ls
sqlite3 external.db 进入数据库
.tables //列出所有表
.mode column 显示的列会对齐
.header on //显示列名
select * from 表
vi xx.sh +22 //跳到指定行
当前行 dd
全选ggvG 按d删除
touch + xx.tt
/xx 查找某字符, n 向下找
:s/from/to/ 替换当前行第一个
:s/from/to/g 替换当前行所有
out/soong/host/linux-x86/bin
如果没有androidmk 使用m -j blueprint_tools
androidmk android.mk > android.bp
查找
find prebuilts/sdk/ -name Android.bp|xargs grep “name.*androidx”
adb shell
cat /proc/cpuinfo AArch64对应arm64-v8a
getprop ro.product.cpu.abi //打印架构字符串
busybox find . -name filename
####抓取日志
adb pull /data/misc/bwlog/
####查看当前占用
Lsof | grep 路径
Settings.System.getString(context.getContentResolver(), CustomViewUtils.NAME_BW_THEME_COLOR);
settings get SYSTEM bw_theme_color
busybox du -h -d 1
####设置屏幕旋转
adb shell content insert –uri content://settings/system –bind name:s:user_rotation –bind value:i:1 i后面取值(0,1,2,3)
####应用冷启动脚本
1 | $ for i in `seq 1 100` |
使用镜像
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple (xxx)
前言:最近涉及到和QQ打交道,定义所有的好友一共只能有300条消息,如果一次性从数据库读取300条或者更多,界面会有细微的卡顿.所以考虑了下分页,第一次进来只显示20条(仿微信),当用户滑到第一条后,如果数据库有消息,则再加载20条.
##步骤-问把大象关冰箱,总共分几步?
###1.自定义absListview.scrollListerner
核心的东西是监听ListView的scrollListerner,网上扒了一个挺不错的,大家用的时候实现这个scrollListerner,完善自己的逻辑即可
1 | public class MyOnScrollListener implements OnScrollListener { |
###2.实现此接口
1 | public class ListPageActivity extends Activity implements MyOnScrollListener.OnloadDataListener { |
showListView里面无疑是普通的更新adapter的工作
那么我们如何借助xutils的数据库进行分类呢?
###3.利用xutils数据库操作进行分页处理
首先,我们理一下思路,上面我们已经实现了上拉的回调,在此回调中把新来的数据加载到adapter即可.
//下文db是Dbmanager的实例,可参考xutils3用法
/**
* 当前屏幕显示的消息数量
*/
private int MAX_MSG_NUMBER = 20;
1 | private List<MsgBean> getDataFromDb() { |
这里解释一下
db.selector(MsgBean.class).where(WhereBuilder.b("id", "=", 400)).limit(MAX_MSG_NUMBER).offset(indexOffset).findAll();是我们实现分页的关键
.limit是我们定义的分页大小
.offset偏移量,我们数据库的大小是不变的,如果不定义偏移量,那么我们定义的分页大小每次只从0取到19.假设数据库中有21条数据,那么我们需要从1取到20,而不是0到19,所以偏移1.
然后我们在loadMoreData中
MAX_MSG_NUMBER += MAX_MSG_NUMBER;
getDataFromDb();
将大小自加,即完成加载更多的功能,在onLoadData(List
后面贴上我对xutils数据库操作的封装,还有很多不完善之处
1 | /** |
传统的媒体开发, 由我们自己定义接口, 服务端, 涉及到不同的业务往往需要重新定义不同的接口, 导致开发成本增加, 为此google在5.0中提供了一套多媒体开发框架, 目前Android9源码中蓝牙音乐服务/收音机服务等均已采用此架构. 主要目的为了规范媒体服务和客户端之间的通信接口, 实现解耦
UI和播放器针对不同项目可有不同程度的扩展, 但针对媒体应用来说, 业务交互基本相同, 所以抽出了MediaController和MediaSession实现核心交互逻辑
MediaController(媒体控制器)
负责与UI的交互, 将用户的操作通过媒体控制器转换为对会话的回调, 同样, 媒体会话改变会通知控制器的回调变化, 实现双重更新机制
MediaSession(媒体会话)
负责与播放器的所有通信, 对UI隐藏播放器实现细节
维护播放相关的信息, 比如播放状态, Id3info等