Android监听SD卡文件变化

时间:2022-06-03 13:32:57

今天再一次使用到FileObserver,上一次使用还是很久之前了。总结一下FileObserver里留的一些“坑”

 
1、FileObserver只能监听一个目录下的“一级”子文件,也就是说FileObserver不支持监测一个目录下嵌套子目录的文件;
 
2、关于FileObserver中的onEvent(int event, String path)函数。其中event在使用过程中发现总是一个很大的数,这与api中定义的1,2,4...512常量不相符。需要将event & FileObserver.ALL_EVENTS,才能得到sdk中定义的常量。究其原因,貌似event中的高位附带了一些信息;
 
3、经过试验发现如果监听的目录被删除了,FileObserver就没有作用了。即使后来再创建一个同样的目录。我要的效果是监听一个目录下的文件,如果这个文件被删除了就重新生成一个该文件,在调试中发现第一次删除整个目录后能重新生成,但是之后再删除就不起作用了(删除单个文件应该没有问题)。应该就是提到的这个原因。有一个解决方法就是通过handler方式,异步线程重新生成了文件后通知service,再重启对该目录的监测即可。
 
4、可以指定要针对文件的哪些操作动作进行监听:比如
 
static final int mask = (FileObserver.CREATE | 
    FileObserver.DELETE | 
    FileObserver.DELETE_SELF |
    FileObserver.MODIFY |
    FileObserver.MOVED_FROM |
    FileObserver.MOVED_TO |
    FileObserver.MOVE_SELF); 
    
    public PathFileObserver(String root){
    super(root, mask);
 
    ... ...
    }

Android监听SD卡文件变化的更多相关文章

  1. Android监听WIFI网络的变化并且获得当前信号强度

    MainActivity如下: package cc.testwifi; import android.os.Bundle; import android.app.Activity; /** * De ...

  2. Android测试读写sd卡文件与写sd卡文件耗时

    测试从sd卡读1k大小的文件,再写1k大小的文件,由于处理耗时很短,所以循环500次,查看耗时:测试写1k大小的文件,直接在内存构造一个1k的buffer,将这个buffer直接写到文件,同样循环50 ...

  3. Android监听系统短信数据库变化-提取短信内容

    由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...

  4. Android 监听网络变化

    Android 监听网络变化

  5. Android监听手机网络变化

    Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...

  6. android监听键盘

    android中的带有输入功能的页面布局经常被弹出的键盘遮挡,一种处理方法是监听键盘的弹出,设置布局的padding或隐藏某些占位控件,使得输入框不被键盘遮挡.一种常用的方法是当Activity设置为 ...

  7. android86 监听SD卡状态,勒索软件,监听应用的安装、卸载、更新,无序广播有序广播

    * 添加权限 <uses-permission android:name="android.permission.RECEIVE_SMS"/> * 4.0以后广播接收者 ...

  8. Android 监听电量的状态

    监控手机电量的变化和充电状态 在BatteryManager中有一个粘性广播,不需要BroadcastReceiver作为接收器,在注册时将传入null IntentFilter filter = n ...

  9. js 实时监听input中值变化

    注意:用到了jquery需要引入jquery.min.js. 需求: 1.每个地方需要分别打分,总分为100; 2.第一个打分总分为40; 3.第二个打分总分为60. 注意:需要判断null.&quo ...

随机推荐

  1. selenium测试(Java)--多窗口切换(十三)

    selenium测试(Java)--多窗口切换(十三) 如果遇到点击按钮或链接后出现新窗口的情况,就需要使用窗口切换的方法. 本例中就是先打开百度搜索界面,然后利用js打开一个百度新闻界面,然后通过s ...

  2. sql修改字段名称

    EXEC sp_rename 'RPersonalityColor.[PTF_UPDATE_DT]','PTC_UPDATE_DT','COLUMN'; RPersonalityColor.[PTF_ ...

  3. MVVM架构~knockoutjs系列之正则表达式使规则更灵活

    返回目录 几乎每种验证架构都会有正则表达式的加盟,一般地,一种验证架构首先会提供一些标准的,常用的验证规则,它们通常是数字验证,电话验证,email验证,长度验证,范围验证,日期验证等,而如果使你的验 ...

  4. BZOJ4367 &colon; &lbrack;IOI2014&rsqb;holiday假期

    设 $fl[i]$表示从$S$向左走,用了不超过$i$天且不回头的最大收益. $fr[i]$表示从$S$向右走,用了不超过$i$天且不回头的最大收益. $gl[i]$表示从$S$向左走,用了不超过$i ...

  5. 【POJ】3744 Scout YYF I

    http://poj.org/problem?id=3744 题意:直线上n个地雷,n<=10,范围在[1, 100000000],每一次有p的概率向前走一步,1-p的概率向前走两步,问安全通过 ...

  6. UINavigationItem UINavigationBar 关系分析&lbrack;转&rsqb;

    http://blog.csdn.net/luoyeffcs/article/details/16106707 目录 1.关系分析 2.关系综述 3.概念点 4.疑问 1.关系分析 UIBarItem ...

  7. poi实现Excel导出

    最近做了一个导出Excel的小功能,以前没接触过,现在分享下自己的代码,想让各位帮忙看看有啥地方可以优化,也方便自己以后查阅... 首先是excelAction的代码: /** * excelActi ...

  8. 利用linux信号机制调试段错误&lpar;Segment fault&rpar;

    在实际开发过程中,大家可能会遇到段错误的问题,虽然是个老问题,但是其带来的隐患是极大的,只要出现一次,程序立即崩溃中止.如果程序运行在PC中,segment fault的调试相对比较方便,因为可以通过 ...

  9. 个人从源码理解angular项目在JIT模式下的启动过程

    通常一个angular项目会有一个个模块(Module)来管理各自的业务,并且必须有一个根模块(AppModule)作为应用的入口模块,整个应用都围绕AppModule展开.可以这么说,AppModu ...

  10. linux中,ssh实现免密自动登录到远程主机,ssh信任的实现

    需求描述: 平时使用ssh的时候,一般使用ssh都是通过用户名和密码登录到远程主机上, 然后执行一些命令,远程登录过程中,需要手动的输入密码(提示输入密码之后), 但是,在实际的应用过程中,涉及到让脚 ...