【问题标题】:Android - Function is not completingAndroid - 功能未完成
【发布时间】:2012-01-09 02:20:41
【问题描述】:

我正在尝试使用 http 调用获取字符串。我注意到在大文件中我没有在它停止之前读取所有文件并给我这个错误然后继续脚本的其余部分。

11-29 11:26:18.417: WARN/ActivityManager(59): Launch timeout has expired, giving up wake lock!
11-29 11:26:18.556: WARN/ActivityManager(59): Activity idle timeout for HistoryRecord{45059000 com.MeetingManager/.MeetingManager}

我觉得 getXML 函数需要很长时间,并且应用程序只是移动到下一行代码,该代码使用了上一个函数中未完成的不完整字符串。当然,这会让我的应用变得糟糕。

如何给我的函数更多时间?

下面是两个函数调用。如果您需要从这些电话中获得更多信息,请告诉我。

String xml = XMLfunctions.getXML(items); 文档 doc = XMLfunctions.XMLfromString(xml);

【问题讨论】:

    标签: android http function timeout


    【解决方案1】:

    看起来您在应用程序的 onCreate 或 onResume 方法中调用了一个长时间运行的函数,它阻塞了主应用程序线程。这不是一个好主意,因为这意味着如果应用程序需要很长时间才能启动,您的用户将无法看到信息 - 他们可能会认为没有任何事情发生并退出。

    查看this 并将任何长时间运行的操作移至ASyncTaskThread with a Handler 之类的位置。查看here 了解更多信息。

    【讨论】:

    • 但这就是我的应用失败的原因。
    • 通常不会停止函数...它可能会导致 ANR(应用程序无响应)但不会在中间停止函数
    • @Denoteone 看看thisthis - 我肯定会建议将长时间运行的进程转移到另一个线程。
    • @martin 我将它移到了 AsyncTask 中,但它仍然没有从 http 请求中获取整个字符串。它读入字符串的文件是一个 57KB 的 xml 文件,没什么特别的。
    • @Denoteone 我试图修复日志中的启动超时警告,你的函数是否抛出任何异常?您是否有可用的最小示例/相关源代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-04
    • 2019-10-31
    • 2013-05-20
    • 2020-06-25
    相关资源
    最近更新 更多