- 浏览: 173122 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
dupeng41255:
问一下,。com的接口 是不是需要注册啊?我调用的时候返回说需 ...
java实现whois域名查询 -
feiyu86:
比喻的非常贴切。。
synchronized方法和代码块的使用 -
罡风笑:
贴结果:CBH 蜀汉 绝顶 刀客
开心一下 你古代的身份。超级好玩~
android.os下的FileObserver类是一个用于监听文件访问、创建、修改、删除、移动等操作的监听器,基于linux的inotify。
FileObserver 是个抽象类,必须继承它才能使用。每个FileObserver对象监听一个单独的文件或者文件夹,如果监视的是一个文件夹,那么文件夹下所有的文件和级联子目录的改变都会触发监听的事件。
所能监听的事件类型如下:
ACCESS,即文件被访问
MODIFY,文件被 修改
ATTRIB,文件属性被修改,如
chmod、chown、touch 等
CLOSE_WRITE,可写文件被 close
CLOSE_NOWRITE,不可写文件被
close
OPEN,文件被 open
MOVED_FROM,文件被移走,如 mv
MOVED_TO,文件被移来,如
mv、cp
CREATE,创建新文件
DELETE,文件被删除,如 rm
DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
ALL_EVENTS,包括上面的所有事件
这些都是FileObserver的静态共有属性。
下面举个例子说明一下其用法。
比如,我要监听sd卡的目录创建事件,新建一个类SDCardListener继承FileObserver:
- import android.os.FileObserver;
- import android.util.Log;
- /**
- * sd卡上的目录创建监听器
- * @author chroya
- *
- */
- public class SDCardListener extends FileObserver {
- public SDCardListener(String path) {
- /*
- * 这种构造方法是默认监听所有事件的,如果使用super(String,int)这种构造方法,
- * 则int参数是要监听的事件类型.
- */
- super(path);
- }
- @Override
- public void onEvent(int event, String path) {
- switch(event) {
- case FileObserver.ALL_EVENTS:
- Log.d("all", "path:"+ path);
- break;
- case FileObserver.CREATE:
- Log.d("Create", "path:"+ path);
- break;
- }
- }
- }
import android.os.FileObserver; import android.util.Log; /** * sd卡上的目录创建监听器 * @author chroya * */ public class SDCardListener extends FileObserver { public SDCardListener(String path) { /* * 这种构造方法是默认监听所有事件的,如果使用super(String,int)这种构造方法, * 则int参数是要监听的事件类型. */ super(path); } @Override public void onEvent(int event, String path) { switch(event) { case FileObserver.ALL_EVENTS: Log.d("all", "path:"+ path); break; case FileObserver.CREATE: Log.d("Create", "path:"+ path); break; } } }
onEvent是回调,系统监听到事件后会触发此事件,参数event就是上面所说的事件类型,根据类型,我们可以做相应的处理,参数path就是触发事件的目录。
然后使用它:
- SDCardListener listener = new SDCardListener("/sdcard");
- //开始监听
- listener.startWatching();
- /*
- * 在这里做一些操作,比如创建目录什么的
- */
- //最后停止监听
- listener.stopWatching();
SDCardListener listener = new SDCardListener("/sdcard"); //开始监听 listener.startWatching(); /* * 在这里做一些操作,比如创建目录什么的 */ //最后停止监听 listener.stopWatching();
如果要在onEvent中做较多操作,最好用线程去做 ,以免因为阻塞接收不到后面的事件。
最后补充一点,比较重要 :
FileObserver对象必须保持一个引用,确保不被垃圾收集器回收掉,否则就不会触发事件了。
来源:http://chroya.iteye.com/blog/761076
发表评论
-
Android 属性动画(Property Animation) 完全解析 (下)
2016-02-22 14:49 1033版权声明:本文为博主原创文章,未经博主允许不得转载。 ... -
Android 属性动画(Property Animation) 完全解析 (上)
2016-02-22 14:47 699版权声明:本文为博主原创文章,未经博主允许不得转载。 ... -
Windows系统中Maven的安装与配置以及m2eclipse插件的安装
2014-04-30 16:06 1165近期公司的一个项目需要用maven搭建,所以把maven的环 ... -
Gallery自动循环滚动,手动滚动的平滑切换及存在问题
2012-11-06 10:51 3506来自:http://blog.csdn.net/lenghun ... -
Gallery自动循环滚动,手动滚动的平滑切换及存在问题
2012-11-06 10:34 7来自:http://blog.csdn.net/lenghun ... -
VLC for Android on Linux
2012-07-12 14:28 1914来自:http://wiki.videolan.org/And ... -
Android模拟器对应电脑键盘快捷键
2012-01-10 00:01 1369Home键(小房子键) 在键盘上映射的是home键。 ... -
Android的gallery实现无限循环和降低选择频率
2011-07-20 17:55 1465gallery是一个很好用的控 ... -
Android编译问题:Only 64-bit build environments are supported beyond froyo/2.2
2011-03-07 19:01 1108在使用: $ repo init -u git://An ... -
任务管理器正在运行的程序(2)
2010-12-23 14:36 1686RunningTaskInfo AndroidManifes ... -
任务管理器正在运行的程序(1)
2010-12-23 14:26 1499RunningTaskInfo 范例说明 ... -
animation知识学习
2010-10-22 14:07 2010LinearInterpolator 变化率是个常数,即 f ... -
Android 页面切换动画效果
2010-10-18 12:54 4135在Android 2.0之后有了ove ... -
android自适应屏幕方向和大小
2010-09-27 16:51 1726一:不同的layoutAndroid手机屏幕大小不一,有 ... -
Android图片处理的的一些方法
2010-08-02 18:54 63101.图片加载方法,方便用户加载图片 /**** 加载本地图片 ... -
OMA-SyncML-DataSyncProtocol-V1_1_2-20030612-A
2010-07-02 12:12 639手机联系人等信息同步中使用 -
Android取得屏幕分辨率
2010-05-31 10:32 921WindowManager windowManager = g ... -
Content Providers
2010-03-04 23:21 1172来源:http://developer.andro ... -
Android基础 : Android Content Provider[转]
2010-03-02 23:09 1063Android应用程序可以使用文件或SqlLite数据库来存储 ... -
Android 联系人开发- 保存联系人
2010-03-02 22:46 4723最近在开发android平台的联系人部分,有点总结和大家分享一 ...
相关推荐
6 创建自定义列表对话框 笔者为该对话框添加了自定义的布局文件 该自定义布局文件包含一个文本标签和一个文本框 并实现了确定按钮点击监听事件 在文本框输入内容后 获取文本框里的内容 并以toast形式显示出来 ...
监听Android软键盘弹出和收起事件(所有代码都是抽离自facebook/react-native源码中, 亲测有效, 放心食用)。回调事件方法参数包含键盘是否弹出(isShow)、键盘高度(keyboardHeight)、屏幕可用高度(screenHeight)、屏幕...
主要介绍了android监听返回按钮事件的方法,涉及Android事件监听的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
Android 监听百度地图缩放事件
android 后台监听按键事件方法及demoandroid 后台监听按键事件方法及demo
主要给大家介绍了Android在Fragment中实现监听触摸事件的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
windows,linux下如何监听新建文件,复制文件,移动文件,剪切文件,修改文件.zip 监听文件修改事件,文件监控文件的新建,复制,修改,剪切,删除,修改操作 包括两个版本:windows版和linux版
本Android源码演示事件监听方法的创建和具体实现,演示程序中,用户点击不同的按钮,演示具体的事件监听功能: public void onClick(View v) {//实现事件监听方法 if(v == buttons[0]){//按下第一个按钮时 ...
我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面;在点击搜索框的时候,点击右下角的search符号键可以进行搜索;或者在...
监听android 手机文件的一些列变化。
android Button常用监听事件的几种类型
android 事件监听机制,通过监听来控制飞机位置。
用java8实现一个文件目录的监听,目录中文件创建、修改、删除等操作
Android 监听EditText变化事件
Android系统API提供了FileObserver抽象类(Linux的INotify机制)来监听系统/sdcard中的文件或文件夹,FileObserver类能对sdcard中的文件及文件夹的打开、创建、移动和删除操作进行监控。下面看看代码实现: (1)...
android监听app的启动,在API20以前用ActivityManager获取栈顶最近的应用,但API20以后捕捉不到手机上软件包名,这个更改可以获取最近打开app的包名,从而监听打开的APP。
简单好用的全局监听器,没有用任何的第三方库,代码简单明了
android 外部类作为事件监听器类 ,外部类形式的事件监听器不能自由访问创建GUI界面
这个项目已经很老了,其实是从 Android 4.4.4 的系统 Settings 中 copy 出来的。 其实原理都是编译运行系统 ...Android 操作以太网的项目,提供了监听网线插拔和以太网开关,设置以太网静态IP、网关、子网掩码、dns等。
检测软键盘是否显示或隐藏的功能。blog:http://blog.csdn.net/hehaiminginadth/article/details/48435703