我正在编写一个使用 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 请求的文件。我知道这真的很复杂,但这确实是我目前唯一能做到的方法。