一次Android相册的开发日志记录 Day3

在开发阶段进入到Day2之后,工作开始变得繁忙了起来,加之生活上也有许多琐事要安排,导致相册开发进度陷入停滞。
但是与此同时,群晖的DSM7.0正式版发布了,跟随着新系统到来的,是Moments和DSPhoto两个相册软件废弃,随之而来的是整合了两者功能的SynologyPhoto,
于是我升级了并体验了一波,UI风格也与时俱进,同时整合了Moments和DSPhoto的优点,可以时间轴、文件夹、相册、多维度的管理照片,网络连接也稳定了非常多,这基本就是我想要实现的。但是还是有小遗憾的,文件夹视图模式下,仍然和DSPhoto一样,只有两列,在图片数量巨多的时候,查找就变成了一个很痛苦的事,这也是阻挠我使用这个作为相册系统的一个重要因素。

但是!等等!是不是只有这一点不满意?那么…我如果能修改一下APP,让他变成3列呢?

说干就干,试试看。

一次Android相册的开发日志记录 Day2

初步定好方案之后,我们先来实现一个基本的相册app。
一个基本的相册APP总共由3个页面构成:

  • 相册文件夹页面
  • 照片列表页
  • 照片详情页

在页面展示之前,首先我们要能拿到数据,这里我们使用MediaStore来获取用户的媒体信息。
MediaStore记录了用户的各种类型的文件位置,并保存到数据库中名称为external.db

一次Android相册的开发日志记录 Day1

我实在受够啦!!!!
这个市面上就没有简单好用的相册管理软件了么!!!
尝试了我能找到的市面上所有的相册管理软件,没有一个能完全做到我想的样子。
手机自带的相册软件+云同步确实可以在单个或同品牌手机内,完成我想要的需求,但是我手上的设备众多,每次更换设备不一定会使用原品牌,那么这就变得非常的麻烦了。

我的需求实际相对简单:
1.相对可用的UI,比如三星相册,小米相册
2.照片存储在服务器上,本地只缓存缩略图,只有用到的时候展示全图。
3.支持文件夹管理,这个非常关键。并且对应在服务器的文件目录结构要一致。
4.支持隐藏显示部分相册,保护隐私。
5.支持文件夹->远程文件夹的定向同步(单向或双向)

但是同时满足这些点的相册,或多或少都有些问题。

Android打印日志到文件

项目遇到一个问题需要排查,由于是偶现的问题,所以需要打印特定的日志并保存下来,但是并不需要将所有的Log都保存下来,
那么就需要一个小工具来解决这个问题了。

逻辑也很简单,当需要写入日志时,调用函数进行写入即可。简单封装下的代码如下,便于使用。

Android内存泄露的排查

在一次项目开发中,测试提到了一个问题,在详情数据页左右反复滑动多次,页面会越来越卡顿,加载速度也会越来越慢,需要我排查一下问题。
由于这个详情数据页面是一个Fragment,数据量特别大,并且嵌套在ViewPage中可以左右滑动,并且ViewPage的页数可以非常多。那么首先想到的问题是ViewPage + Fragment,Fragment没有被正确回收导致的。
首先来排查下Fragment的生成逻辑:

1
2
3
4
5
6
7
8
@Override
public Fragment getFragment(Fragment fragment, int currentPage) {
DemoFragment fragment = new DemoFragment();
Bundle bundle = new Bundle();
bundle.putInt("page", currentPage);
fragment.setArguments(bundle);
return fragment;
}

记一次生产环境上线的经历

最近写了一个项目,也是两三年没写后端的我再次尝试后端项目,在开发和部署的过程中,都遇到了许多奇奇怪怪的问题,
记录下来,也算是对这段时间惊心动魄经历的一次总结吧。

K8s容器内部时间错误

项目上线后,是使用Docker+K8s进行运维和部署的,但是测试环境是普通ECS主机。测试环境一切正常,
但是在生产环境出现了订单时间出现了错误,起初是认为自己项目时间没有做"UTC+8"处理,或者是mysql连接时
未指定时区。不过这两点检查之后,都没有问题。最后把目光放到了容器里。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×