繁体   English   中英

从FileObserver启动IntentService

[英]Starting an IntentService from 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的可接受上下文。 无论如何,我只能使用字符串之一来启动IntentService吗? 我不需要它返回任何东西,我只需要提供一些字符串即可使其工作(文件名等),或者还有另一种方式可以启动IntentService。 这真的让我感到难过。

感谢您对高级的任何帮助!

编辑:好的。 我尝试了许多上下文,但没有一个能奏效。 调用构造函数时,服务类的应用程序或基础上下文不会触发意图服务。 这是我的应用程序的基本布局:

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

因为我在FileObserver的扩展中工作,所以没有可以接受Intent的可接受上下文。

FileObserver不能存在于真空中。 它需要由一项活动或服务来管理,这将为您提供Context

您可以通过覆盖Application创建应用程序的静态字段。 在oncreate中

sInstance = this;

采用

MyApplication.sInstance.startActivity(intent);

编辑:再次考虑,如果您需要做的就是在不传递FileObservver信息的情况下启动服务,则可以使用PendingIntent,可以创建PendingIntent并在创建FileObserver时进行设置并使用

pendingintent.send()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM