Java 从FileObserver启动IntentService

Java 从FileObserver启动IntentService,java,android,android-intent,intentservice,fileobserver,Java,Android,Android Intent,Intentservice,Fileobserver,我正在编写一个应用程序,它使用android中的fileobserver。当我的文件在任何情况下被修改(创建等)它应该上传。为了实现队列并通过使用线程等防止内存耗尽,我希望使用IntentService一次上载一个文件,并在失败时避免执行,以便在用户恢复连接时上载。但问题是: 所有给定的构造函数的意图 Intent(); Intent(Intent ); Intent(String ); Intent(Context, Class<?>); //The one I always us

我正在编写一个应用程序,它使用android中的fileobserver。当我的文件在任何情况下被修改(创建等)它应该上传。为了实现队列并通过使用线程等防止内存耗尽,我希望使用IntentService一次上载一个文件,并在失败时避免执行,以便在用户恢复连接时上载。但问题是:

所有给定的构造函数的意图

Intent();
Intent(Intent );
Intent(String );
Intent(Context, Class<?>); //The one I always use
Intent(String, Uri );
Intent(String, Uri, Context, Class<?> );
Intent();
意图(意图);
意图(字符串);
意图(上下文、类别)//我经常用的那个
意图(字符串,Uri);
意图(字符串、Uri、上下文、类);
…行不通。因为我在FileObserver的扩展中工作,所以没有可接受的上下文可以提供意图。我是否可以使用字符串1启动IntentService?我不需要它返回任何东西,我只需要为它提供一些字符串(文件名等),或者是否有其他方法可以启动IntentService。这件事真让我难堪

感谢您在advanced中提供的任何帮助

编辑:好的。我试过很多种情况,但都不管用。当调用构造函数时,通过构造函数传递的服务类中的应用程序或基础上下文不会触发意图服务。以下是我的应用程序的基本布局:


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

您可以通过覆盖应用程序来创建应用程序的静态字段。立即创建

sInstance = this;
使用

编辑: 如果您只需要启动一个服务而不从FileObserver传递任何信息,那么您可以创建一个,并在创建FileObserver和使用时设置它


您可以通过覆盖应用程序来创建应用程序的静态字段。立即创建

sInstance = this;
使用

编辑: 如果您只需要启动一个服务而不从FileObserver传递任何信息,那么您可以创建一个,并在创建FileObserver和使用时设置它

因为我在FileObserver的扩展中工作,所以没有可接受的上下文可以提供意图

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

因为我在FileObserver的扩展中工作,所以没有可接受的上下文可以提供意图


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

,FileObserver将由服务启动。在这种情况下我该怎么办?FileObserver将由服务启动。在这种情况下,我会怎么做?@OsmiumUSA:说“没有人能行”并不能让事情变得更清楚。@OsmiumUSA:“我尝试了很多上下文,但没有人能行”--任何
上下文
都可以与
startService()一起工作。你的问题就在别处:
startService()
没有被调用,或者你在
startService()
中使用了错误的
Intent
,并且忽略掉掉在LogCat中的警告,或者你的
IntentService
本身有bug,或者别的什么东西。@OsmiumUSA:说“没问题”没有让事情变得更清楚。@OsmiumUSA:“我尝试了很多上下文,但没有一个是有效的”--任何
上下文
都可以与
startService()配合使用。你的问题就在别处:
startService()
没有被调用,或者你在
startService()
中使用了错误的
Intent
,并且忽略了掉到LogCat中的警告,或者你的
IntentService
本身有bug,或者其他什么。