0

我开发了一个 Sencha Touch App,它使用网络连接在登录过程中调用不同的 Web 服务。我使用 Sencha CMD 构建本机 apk,它在 Android 2.3.7 中可以正常工作,但在较新版本中不能正常工作。我读到这是一个 NetworkOnMainThreadException 问题。我为 Android 找到的解决方案是:

1) 通过实现 AsyncTask 来进行 web 服务调用。

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

但是如何在我的 Sencha Javascript App 中应用这些解决方案呢?我真的希望你们中的某个人找到了解决方案!

感谢您的任何建议!

编辑

经过一些测试,我发现我的应用程序在 android 2.3.7 中运行良好,但在 android 4 中运行良好,因为我的 web 服务之一。这是一个liferay json 网络服务。这是我调用的第四个 Web 服务,如果我不调用它,我的应用程序可以正常工作。有人知道Android(版本>2.3.7)Web View 是否不支持Liferay Web Service?

4

1 回答 1

1

我认为您正在对UI Thread. 这将导致阻塞用户界面。从 Android 3.0 开始,在其上执行网络操作UI Thread不适用,并且会抛出NetworkOnMainThreadException.

在 API 文档中,它说:

网络操作可能涉及不可预知的延迟。为防止这导致糟糕的用户体验,请始终在与 UI 不同的线程上执行网络操作。AsyncTask 类提供了一种从 UI 线程触发新任务的最简单方法。

所以你应该使用AsyncTask它来处理这个问题。

看看这个链接。这可以作为写作的样本AsyncTask

如果您想知道为什么要应用此过程以及为什么会引发此异常。也检查一下

希望这可以帮助你!

于 2013-10-09T12:04:24.907 回答