2012-08-16 57 views
0

我正在編寫一個應用程序,它使用android中的fileobserver。當我的文件被修改(創建等)時,它應該上傳。爲了實現一個隊列並通過使用線程等避免內存不足,我希望使用IntentService一次上傳一個文件,並在失敗時保持執行狀態,以便當用戶重新獲得連接時,上傳。但現在的問題是:從FileObserver啓動IntentService

所有意圖給定的構造函數...

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。這一個真的讓我難住。

感謝您的高級幫助!

編輯:好的。我已經嘗試了很多上下文,但都看不到工作。 intent服務不會被應用程序或基類上下文從被調用時通過構造函數傳遞的服務類發起。這裏是我的應用程序的基本佈局:

登錄活動進入菜單活動,菜單活動啓動服務,服務啓動服務處理程序(請參閱android文檔中的服務示例,瞭解它是什麼)並傳遞上下文通過構造函數。服務處理程序啓動FileSync並通過構造函數傳遞上下文。 FileSync保存到類變量的上下文中。然後FileSync會等待文件被修改,然後使用上下文來啓動IntentService以通過Intent上傳文件。我知道這真的很複雜,但目前我只能這樣做。

回答

1

您可以通過覆蓋應用程序來創建應用程序的靜態字段。在OnCreate中

sInstance = this; 

使用

MyApplication.sInstance.startActivity(intent); 

編輯: 關於第二個想法,你可以使用的PendingIntent如果你需要做的就是不從FileObservver傳遞任何信息,啓動一個服務,你可以創建一個PendingIntent和它設置在創建FileObserver的時間和使用

pendingintent.send()

+0

FileObserver將由服務啓動。在那種情況下我會做什麼? – 2012-08-16 22:53:47

2

由於我在FileObserver的擴展中工作,沒有可接受的上下文來提供Intent。

這個FileObserver不能存在於真空中。它需要由一項活動或服務來管理,並且這會給你你的Context

+0

我增加了更多信息以使自己更清楚。 – 2012-08-17 12:27:55

+0

@OsmiumUSA:說「沒有人願意工作」並沒有讓事情變得更清楚。 – CommonsWare 2012-08-17 12:52:38

+0

增加了更多。更好? – 2012-08-17 20:24:59