首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >正确使用AsyncTasks和处理视图和活动所需的对象

正确使用AsyncTasks和处理视图和活动所需的对象
EN

Stack Overflow用户
提问于 2014-04-01 07:17:13
回答 1查看 104关注 0票数 0

因此,我目前正在编写一个应用程序,并有一些关于如何处理AsyncTasks的问题。我尽可能详细地描述我的问题。我有以下课程:

  1. CustomLocationListener. MainActivity -此活动只执行setContentView(R.layout.myLayout)并创建my MainActivity的对象。布局包含一个自定义视图和一个ProgressBar
  2. CustomLocationListener --这基本上只是一个实现LocationListener并具有默认LocationListener方法的类。此外,我还编写了一种方法,以检查哪些提供者能够优先使用NETWORK_PROVIDER
  3. Display --这只是一个辅助类。我只使用它来获得显示指标来计算一些东西。
  4. MyCustomView -这个类扩展了View类。它还有一个类型为Display (我自己的类)的属性。

现在你应该知道对我的代码很重要的一切。那么,我现在的问题是,如何处理AsyncTasks,因为这是应用程序应该通过的步骤:

  1. 获取用户设备的当前位置。
  2. 对数据库服务器(mysql)执行一些查询,并将它们保存为非持久性(数据由城市名称组成)
  3. 计算数据库中用户位置与城市之间的距离。
  4. 做一些其他的计算,找出在屏幕上画的位置。
  5. 画出一切

最重要的是,我想实现一个进度条,它应该是有效的,直到所有的计算和绘图阶段开始。所以,我有点搞不懂该在哪里编码什么。我是说,这两种计算(第3和第4步)。一定要了解对方。步骤4的计算需要步骤3的计算结果,而且我的活动类也应该知道计算的状态,因为当我开始绘图时,必须使ProgressBar不可见。

我希望我足够详细,感谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 07:45:33

那么,您可以从AsyncTask文档中收集到以下内容:

执行异步任务时,该任务将经历4个步骤:

  1. onPreExecute(),在执行任务之前在UI线程上调用。此步骤通常用于设置任务,例如,通过在用户界面中显示进度条。
  2. doInBackground(Params.),在onPreExecute()完成执行后立即在后台线程上调用。此步骤用于执行可能需要很长时间的背景计算。异步任务的参数将传递到此步骤。此步骤必须返回计算结果,并将其传递回最后一步。此步骤也可以使用publishProgress(进度.)发布一个或多个进度单位。这些值被发布在UI线程上,在onProgressUpdate中(进度.)走一步。
  3. onProgressUpdate(进步.),在调用publishProgress(进度.)后在UI线程上调用。执行的时间未定义。此方法用于在后台计算仍在执行时显示用户界面中的任何形式的进度。例如,它可以用于在文本字段中动画进度条或显示日志。
  4. onPostExecute(结果),在后台计算完成后在UI线程上调用。背景计算的结果作为参数传递到此步骤。

因此,我建议您使用两个AsyncTasks在doInBackground(Params...)方法中完成geo和服务器(各一个)的工作,并将值返回给onPostExecute(Result)方法中的MainActivity。另外,通过使用MainActivity方法,让您的onProgressUpdate(Progress..)知道进度。

当它们完成后,您可以选择使用另一个AsyncTask来执行计算,如果它们明显地拖住了UI线程。对它使用相同的执行方法。

当这一切完成后,你就可以画一个视图了.(我想你就是这么说的)

在开始“加载.”计算之前,先加载一个默认视图。或者别的什么。拥有另一个不可见的视图,当您准备显示计算出来的东西时,准备就绪,并且在准备要绘制的时候将其设置为可见。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22790021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文