文件管理项目总结

本文总结了一个Android文件管理项目的优化和实现,涉及搜索流程、目录打开、线程池使用、设计模式应用和项目架构。优化点包括:文件搜索、布局调整、列表功能增强、OTG设备处理、性能优化等。搜索流程利用搜索工具类统一管理,采用消息队列避免频繁请求,深度优先或广度优先遍历搜索。项目采用MVC架构。
摘要由CSDN通过智能技术生成

项目职责:
根据交互和视觉优化部分页面,优化搜索页/可编辑对话框软键盘弹出收起逻辑,优化文件刷新与监听时机(重命名后刷新,返回页面时刷新,不监听CREATE与ATTRIB),优化文件打开逻辑(如能解码缩略图直接调用相册)。
调整布局并添加滚动条和按压效果,增加列表折叠展开功能,对最近页数据重新分组以合并同一日期的同一应用文件。
优化文件搜索:从媒体库中搜索,处理媒体文件的移动删除,继续搜索,添加最近搜索和分类或应用下搜索。添加数据埋点。
使用公共控件,适配多语言、深色主题、横竖屏、虚拟导航栏、折叠、分屏、OTG设备。
修改bug,包括原生文件管理bug,整理冗余代码,修复无响应(搜索界面不做排序,快捷访问无响应×2,进入编辑状态再滑到最底部后再点击快捷访问)。
清理加速中手机存储的容量显示优化为快速对应类型,获取并展示系统和应用大小两项数据及调整布局。

技术要点:
OTG设备拔出后,刷新并退出OTG目录。接收浏览U盘的Intent。USB页面单独作为一个类。只监听U盘路径。
重写重命名、压缩和新建文件夹对话框数据保存和恢复逻辑。配置更改时恢复标题和界面、浮窗位置、对话框的提示文字和按钮状态、选择状态和选择项、搜索推荐项、搜索状态等,使用ViewModel。
向下移动并增加数据实现列表展开,删除并向上移动实现列表折叠。更改刷新后的折叠状态恢复逻辑。
优化最近页数据更新:查询类型大小由单独模块处理,避免对最近页频繁更新。
性能优化:过度绘制。自定义省略号TextView,自定义条形图、环形图及动画展示。

搜索流程解析

文件管理的搜索功能主要位于搜索页,即SearchActivity。搜索页主要分为搜索框RySearchView和搜索结果列表,本章节具体阐述从搜索框输入文字到将搜索结果返回的整个过程。

  • 搜索框RySearchView会交由搜索工具类SearchViewManager来统一管理,由工具类统一管理是为了处理输入异常或输入频繁等情况。
    public void install(RySearchView searchView, boolean isFullBarSearch) {
   
        mSearchView = searchView;
        mSearchView.setOnQueryTextListener(this);
        ...
    }

install方法中,会对RySearchView设置输入框输入的监听,即setOnQueryTextListener(OnQueryTextListener listener)方法。SearchViewManager实现了RySearchView.OnQueryTextListener接口,当往搜索框输入字符时,接口的onQueryTextChange(String newText)方法就会被回调。在onQueryTextChange方法中,重复请求会直接返回,其他请求会先取消队列中的搜索请求,再新建一个搜索任务,通过发送SEARCH_MESSAGE消息,将任务放进消息队列。任务会将实际工作转入主线程,最终将字符通过mListener.onSearchChanged(mCurrentSearch)方法给回搜索页。

    @Override
    public void onQueryTextChange(String newText) {
   
        if (newText.equals(mCurrentSearch)) {
   
            return;
        }
        Message message = Message.obtain(mHandler, SEARCH_MESSAGE);
        message.obj = newText;
        mHandler.removeMessages(SEARCH_MESSAGE);
        mHandler.sendMessageDelayed(message,300);
    }

    public void initHandler(){
   
        mHandler = new Handler() {
   
            @Override
            public void handleMessage(Message msg) {
   
                if (msg.what == SEARCH_MESSAGE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值