1

我的小部件在小部件中有两个用于左右导航的按钮。如果我有一组数据,那么我使用左右箭头按钮在数据之间切换。为了更新数据,我每分钟进行一次 Http 调用。如果 http 调用需要时间才能返回,我的按钮点击开始累积,并在暂停 7-8 秒后突然连续触发。我正在将pendingIntents 用于按钮并在小部件的广播接收器中接收它。

如果 HTTP 调用很快,则按钮单击工作正常。

但是,如果 HTTP 调用返回缓慢,并且我在右箭头上单击 10 次,而单击不会发生任何事情,并且在 7-8 秒后会瞬间触发 10 次单击。

请建议我如何阻止我的按钮点击被阻止然后连续被解雇。

HTTP调用缓慢是按钮卡住的真正原因吗?

4

2 回答 2

1

您不应该从您的 UI 线程进行 HTTP 调用,因此请确保您使用 AsyncTask 来执行任何 i/O 或网络操作。

异步任务

于 2012-12-13T17:16:16.077 回答
0

这可能是因为您在 UI 线程上执行 HTTP 请求不是一个好主意,因为 HTTP 请求可能像其他网络任务或 I/O 任务一样需要时间,并且 android 会检测到这一点并可能向用户显示 ANR 消息(App没有响应)并询问用户是否要强制关闭应用程序。

您需要在 onclick 事件将触发的 ASyncTask 中运行 HTTP 请求。这样,将为 HTTP 内容创建一个新线程,同时用户界面可以继续工作并接受用户输入而不是锁定。

于 2012-12-13T17:40:21.137 回答