【问题标题】:Alternative to FileObserver via BroadcastReceiver?通过 BroadcastReceiver 替代 FileObserver?
【发布时间】:2012-05-08 21:20:11
【问题描述】:

我需要监控 SD 卡中的文件(递归)。由于广播接收器可以通过设置特定的意图过滤器“动作”来接收系统事件,我们大概可以使用它来处理打开、删除等文件更改事件。我们只需要知道什么是“动作”、“类别”和“数据” " 值将与要使用的任何特定“用户权限”一起在清单文件中设置。

另一种方法是实现 FileObserver 但这有垃圾收集的问题,即使我们创建一个服务来保存它的对象,服务本身也可能在资源不足时终止(点 5.2 http://www.vogella.com/articles/AndroidServices/article.html)所以它不完全是完全证明方法。

您能否告诉我哪些配置值将使 BroadcastReceiver 能够接收此类事件/意图?

【问题讨论】:

    标签: android broadcastreceiver android-manifest android-service android-activity


    【解决方案1】:

    由于广播接收器可以通过设置特定的意图过滤器“动作”来接收系统事件,我们可以使用它来处理文件更改事件,如打开、删除等。

    没有。普通的 Java I/O 操作不会产生广播。

    另一种方法是实现 FileObserver,但这存在垃圾收集问题,即使我们创建一个服务来保存其对象,服务本身也可能在资源不足时终止......所以它不是一个完全证明的方法。

    除了修改固件之外,没有“万无一失”的方法可以让您持续监控外部存储操作。

    我会使用AlarmManager 定期扫描目录以查找更改,并由用户选择轮询周期,以便他们可以控制您的应用程序的电池和 CPU 消耗。

    【讨论】:

    • 查看另一篇文章 stackoverflow.com/questions/3418586/… 尽管此链接捕获了 mimetype"vnd.android.cursor.dir/ 的创建和编辑意图(action="android.intent.action.EDIT" 等)人”等,我想知道是否可以将相同的操作与 mimetype="image/jpg" 和 host="file" 一起使用来捕获与删除一种 mime 类型相关的意图。有什么想法吗?
    • @P.C.:该问题中描述的技术不适用于该人,也不适用于您。那些Intent 操作与startActivity() 一起使用并且不能被BroadcastReceiver 接收。
    猜你喜欢
    • 2017-02-22
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    相关资源
    最近更新 更多