java - 从 FileObserver 启动 IntentService

标签 java android android-intent intentservice fileobserver

我正在编写一个使用 android 中的 fileobserver 的应用程序。当我以任何方式修改文件(创建等)时,它应该上传。为了实现一个队列并防止使用线程等耗尽内存,我想使用 IntentService 一次上传一个文件,并在失败时不执行,以便当用户重新获得连接时,上传。但问题是:

所有给定的 Intent 构造函数...

Intent();
Intent(Intent );
Intent(String );
Intent(Context, Class<?>); //The one I always use
Intent(String, Uri );
Intent(String, Uri, Context, Class<?> );

...不会工作。因为我正在使用 FileObserver 的扩展,所以没有可接受的上下文可供我提供 Intent。无论如何,我可以只使用 String 来启动 IntentService 吗?我不需要它返回任何内容,我只需要给它提供一些字符串即可使其工作(文件名等)或者是否有另一种方法可以启动 IntentService。这个真的把我难住了。

感谢您的帮助!

编辑:好的。我尝试过很多上下文,但没有一个起作用。 Intent 服务不会被应用程序或来自服务类的基上下文触发,这些服务类在调用它们时通过构造函数传递。这是我的应用程序的基本布局:

登录 Activity 转到菜单 Activity ,菜单 Activity 启动服务,服务启动服务处理程序(请参阅android文档中的服务示例以了解它是什么)并通过构造函数传递上下文。服务处理程序启动 FileSync 并通过构造函数传递上下文。 FileSync 保存类变量中的上下文。然后,FileSync 等待文件被修改,然后使用上下文启动 IntentService 来上传通过 Intent 请求的文件。我知道这真的很复杂,但这确实是我目前唯一能做到的方法。

最佳答案

Because I'm working in an extension of FileObserver, there is no acceptable context from which I can feed the Intent.

这个FileObserver不能存在于真空中。它需要由 Activity 或服务管理,这将为您提供上下文

关于java - 从 FileObserver 启动 IntentService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11996404/

相关文章:

java - 使用java将xls中的字符串转换为日期格式

java - 返回 boolean 值方法

android - 时代广场和今天的约会

android - as3 android保存从服务器下载的文件

android - 以编程方式重新启动 Android 应用程序

android - 如何重启onCreateInputView()?

java - 原语集合的 hibernate 验证

java - EclipseLink + JPA + 通用实体 + SINGLE_TABLE 继承

android - 在 ConstraintLayout 中使用障碍链接

java - startActivityForResult() 可以发送数据吗?