【问题标题】:Sencha Touch Apk and NetworkOnMainThreadExceptionSencha Touch Apk 和 NetworkOnMainThreadException
【发布时间】:2013-10-09 11:06:31
【问题描述】:

我开发了一个 Sencha Touch 应用程序,它使用网络连接在登录过程中调用不同的 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 吗?

【问题讨论】:

    标签: javascript android html sencha-touch apk


    【解决方案1】:

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

    在 API 文档中,它说:

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

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

    查看link。这可以作为写AsyncTask的样本

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

    希望对您有所帮助!

    【讨论】:

    • 感谢 gokhanakkurt!我知道问题是什么以及如何在 java 中解决它,但在 Sencha/javascript 中不知道。现在我正在编写一个新的 android java 应用程序并尝试将我的 app.jar 文件放入其中(我使用 dextojar 工具从 apk 创建了 jar 文件)
    • 好的,想在Sencha Touch中解决这个问题吗?能具体说说你的问题吗?你的目的是什么?
    • 问题是我的 sencha 应用程序有一个登录视图,在您输入用户名和密码后,我的应用程序调用 6 个不同的 Web 服务,然后如果一切正常,您转到下一个视图。我知道这是一个线程问题。我使用了延迟任务,但它并没有解决问题。我的应用卡在登录视图中
    • 我之前说过,我的应用在 Android 2.3.7 中运行良好。谢谢!!
    猜你喜欢
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    相关资源
    最近更新 更多