2016-03-10 31 views
0

我有一個後臺服務負責檢查服務器的更新。在應用安裝請求後等待用戶操作?

的服務啓動一個的AsyncTask,負責實際的檢查和更新的下載。

然後,我推出的意圖,要求用戶安裝或取消安裝

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(newFile(SystemConstants.UPDATE_DOWNLOAD_PATH+fileName)),"application/vnd.android.packagearchive"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
mContext.startActivity(intent); 

Activity我會startActivityForResult但是由於service開始我有一個很難搞清楚如何請求等待用戶的迴應。

我怎樣才能的的AsyncTask內等待用戶選擇的動作?

感謝

+0

如果用戶按下任意鍵,那麼你需要做什麼? –

回答

1

我有一個很難弄清楚如何等待用戶響應

如果你需要一個反饋,然後你的服務不應該直接觸發此意圖。相反,你應該在你的應用中擁有「中間人」,而最有可能的是另一種活動,一旦服務告訴它這樣做,它就會觸發該意圖。而且,由於這將是經常性活動,您可以使用startActivityForResult()

然而,我認爲你應該閱讀有關event bus concept(GreenRobot的,OTTO,番石榴的),因爲這可能是您的應用內通信很有幫助。

1

首先,開始在後臺下載似乎是一個不好的做法,我,除非它的大小是非常小的。用戶應該知道有升級並詢問是否可以繼續。

這且不說,我認爲你應該使用NotificationPendingIntent。當用戶點擊您的通知時,您的未決意圖將會打開一個Activity,啓動您的startActivityForResult()

如果這個檢查是一個週期性的任務,確保你使用JobScheduler以優化電池的使用,避免您的服務得到由操作系統終止。