【发布时间】:2012-08-16 22:34:54
【问题描述】:
我正在编写一个使用 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。无论如何我可以只使用字符串之一来启动 IntentService 吗?我不需要它返回任何东西,我只需要给它一些字符串就可以让它工作(文件名等)或者有另一种方法可以启动 IntentService。这真的让我难过。
感谢任何高级帮助!
编辑:好的。我尝试了很多情况,但都没有看到工作。意图服务不会被应用程序或来自服务类的基本上下文触发,这些服务类在调用它们时通过构造函数传递。这是我的应用程序的基本布局:
Login Activity 转到 Menu Activity,Menu Activity 启动 Service,Service 启动 Service Handler(请参阅 android 文档中的服务示例以了解它是什么)并通过构造函数传递上下文。 Service Handler 启动 FileSync 并通过构造函数传递上下文。 FileSync 将上下文保存在类变量中。 FileSync 然后等待文件被修改,然后使用上下文启动 IntentService 以上传通过 Intent 请求的文件。我知道这真的很复杂,但这确实是我目前唯一能做到的方法。
【问题讨论】:
标签: java android android-intent intentservice fileobserver