2012-04-28 46 views
2

我正在使用phonegap/cordova的android應用程序。此應用程序使用JavaScript從服務器不時提取內容,並在發現新內容時發出系統提醒警報。 我面臨的問題是,當android在內存或其他方面短缺時,應用程序最終會退出。如何讓android服務保持phonegap ui活着

所以我在我的清單中添加了一項服務(每個人都說服務可以解決問題)。

<service android:name="UpdateService" /> 

很好,但只是有這個服務沒有(顯然)。那麼如何讓我的服務觸發主應用程序繼續運行?

此外: 我也設法在我的主要應用

+0

在瀏覽器中使用javascript進行背景檢查可能是錯誤的方法。在java中使用http請求或其他任何方式在Android服務中進行背景檢查並從那裏發出警報。只有在需要交互式用戶界面時,才能打開基於瀏覽器的JavaScript,即適合Android Actitivy模型的東西。 – 2012-04-28 18:27:11

+0

這將是很好,但應用程序必須是多平臺。因此,我使用phonegap和jquery mobile(ajax)來獲取內容。這適用於每個瀏覽器。 Phonegap的確允許javascript在後臺運行,但是這個過程簡直就是死亡。 – Neograph734 2012-04-28 18:42:17

+0

您的用戶界面可以是多平臺的,但您必須使用平臺特定的擴展來訪問它。使用一些提供通用API的JavaScript代碼將鏈接包裝到擴展中,以便其他代碼在所有平臺上都可以相同。至少對我來說,這似乎遠比試圖將像node.js這樣的東西硬塞進一個android服務,以便以與Android系統實際兼容的方式在後臺運行javascript代碼(即,不會一直死亡) – 2012-04-28 18:59:24

回答

1

嘗試註冊的PendingIntent與AlarmManager,將檢查,以確保您的應用程序正在運行的每n毫秒啓動該服務。如果它沒有運行,請重新啓動應用程序。

使用一些這樣的代碼來啓動應用程序:

Intent serviceIntent = new Intent("com.myapp.LaunchActivity"); 
startService(serviceIntent); 

更換com.myapp.LaunchActivity您的包名和LaunchActivity。

+0

我將查看AlarmManager並檢查正在運行的應用程序。 :) – Neograph734 2012-04-28 18:43:32

+0

我認爲這對用戶來說會比較煩人,假設它甚至在用戶使用其他應用程序(特別是玩遊戲或觀看視頻)時仍然有效( – 2012-04-28 19:51:05

+0

)這讓我覺得Webkit引擎的副作用在與此服務相同的流程。獲取一個資源飢餓的前景應用程序,整個事情可能會被殺死。 Android可能會在稍後重新啓動服務,但可能不是活動代碼。 – 2012-04-28 22:28:18