2013-10-09 144 views
0

我開發了一個Sencha Touch應用程序,它在登錄過程中使用網絡連接來調用不同的Web服務。 我使用Sencha CMD構建原生apk,它適用於Android 2.3.7,但不適用於較新版本。 我讀到這是一個NetworkOnMainThreadException問題。我發現Android的解決方案是:Sencha Touch Apk和NetworkOnMainThreadException

1)通過實施AsyncTask來進行webservice調用。

2)使用StrictMode類在Android和制定的政策

但在我的煎茶的Javascript應用程序如何應用這些解決方案? 我真的很希望你們中的某個人找到了解決方案!

感謝您的任何建議!

編輯

一些測試,我發現,我的應用程序工作在安卓2.3.7罰款後但不是因爲Android的4我的web服務之一。 這是一個liferay json web服務。這是我撥打的第四個Web服務,如果我不叫它,我的應用程序工作正常。 是否有人知道Android(版本> 2.3.7)Web View是否不支持Liferay Web Service?

回答

1

我想你正在執行UI Thread的網絡操作。這將導致阻止用戶界面。從Android 3.0開始,在UI Thread上執行網絡操作不適用,它會引發NetworkOnMainThreadException

在API文檔,它說:

網絡操作可能涉及不可預測的延遲。爲了防止這種 導致糟糕的用戶體驗,請始終在與UI不同的線程上執行網絡操作 。 AsyncTask類提供了從UI線程觸發新任務的最簡單方法之一。

所以你應該使用AsyncTask來解決這個問題。

看看這個了link。這可以是寫作的樣本AsyncTask

如果您想知道爲什麼應用此過程以及拋出此異常的原因。檢查this以及。

希望這可以幫助你!

+0

謝謝gokhanakkurt!我知道什麼是問題,以及如何在java中解決它,但不是在Sencha/javascript中。現在我正在寫一個新的android java應用程序,並試圖把我的app.jar文件(我使用dextojar工具從apk創建了jar文件) –

+0

好的,想要在Sencha Touch中解決這個問題嗎?你能特意告訴我你的問題嗎?你的目的是什麼? – gokhanakkurt

+0

問題是我的sencha應用程序有一個登錄視圖,並且在您輸入用戶名和密碼後,我的應用程序會調用6個不同的Web服務,然後如果一切正常,您可以進入下一個視圖。我知道這是一個線程問題。我使用延遲任務,但它不能解決問題。我的應用在登錄視圖中出現 –