Sencha Touch Apk和NetworkOnMainThreadException

时间:2013-10-09 11:06:32

标签: javascript android html5 sencha-touch apk

我开发了一个Sencha Touch App,它使用网络连接在登录过程中调用不同的Web服务。 我使用Sencha CMD构建原生apk,它适用于Android 2.3.7但不适用于较新版本。 我读到这是一个NetworkOnMainThreadException问题。 我在Android上找到的解决方案是:

1)通过实现AsyncTask来进行webservice调用。

2)在Android中使用StrictMode Class并设置策略

但是如何在我的Sencha Javascript App中应用这些解决方案? 我真的希望有人找到解决方案!

感谢您的任何建议!

  

修改

经过一些测试后,我发现我的应用程序在android 2.3.7中工作正常但在android 4中没有,因为我的一个web服务。 这是一个liferay json网络服务。这是我打电话的第四个网络服务,如果我不打电话,我的应用程序工作正常。 如果Android(版本> 2.3.7)Web View不支持Liferay Web服务,有人知道吗?

1 个答案:

答案 0 :(得分:1)

我认为您正在UI Thread上执行网络操作。这将导致阻止用户界面。自Android 3.0起,在UI Thread上执行网络操作不适用,它会抛出NetworkOnMainThreadException

在API文档中,它说:

  

网络运营可能涉及不可预测的延迟。为了防止这种情况   从导致糟糕的用户体验,始终执行网络操作   在与UI的单独线程上。 AsyncTask类提供了一个   从UI线程启动新任务的最简单方法。

因此,您应该使用AsyncTask来处理此问题。

查看link。这可以是写AsyncTask

的示例

如果您想知道为什么应用此过程以及为什么抛出此异常。也请检查this

希望这可以帮到你!