【发布时间】:2014-04-01 15:17:13
【问题描述】:
所以我目前正在编写一个应用程序,并且有几个关于如何处理 AsyncTasks 的问题。 我尽可能详细地描述我的问题。我有以下课程:
-
MainActivity - 此 Activity 仅执行
setContentView(R.layout.myLayout)和 创建我的 CustomLocationListener 的对象。布局包含一个自定义视图和一个ProgressBar。 -
CustomLocationListener - 这基本上只是一个实现
LocationListener并具有默认LocationListener方法的类。除此之外,我还编写了一个方法来检查哪些提供者可以优先使用NETWORK_PROVIDER。 - Display - 这只是一个辅助类。我只用它来获取显示指标来计算一些东西。
-
MyCustomView - 这个类扩展了
View类。它还有一个Display类型的属性(我自己的类)。
现在您应该知道对我的代码很重要的所有内容了。好吧,我现在的问题是,如何处理 AsyncTasks,因为这是 App 应该经过的步骤:
- 获取用户设备的当前位置
- 对数据库服务器 (mysql) 执行一些查询并将它们保存为非持久性(数据由城市名称组成)
- 计算用户位置与数据库中城市的距离
- 做一些其他的计算来确定在屏幕上绘制的位置
- 画出一切
最重要的是,我想实现一个进度条,它应该是活动的,直到所有计算完成并且绘图阶段开始。 所以,我有点困惑在哪里编码什么。我的意思是,两个计算(第 3 步和第 4 步)都必须相互了解。第4步的计算需要第3步的计算结果。而且我的Activity类也应该知道计算的状态,因为我必须在开始绘制时使ProgressBar不可见。
我希望我足够详细,感谢您的帮助!
【问题讨论】:
-
我可以在 Activity 类中执行所有需要的线程,并且在完成所有计算之后,我可以使 ProgressBar 不可见。但是我怎样才能开始画画呢?我的意思是,当我打开 Activity 时,onDraw() 会立即启动。如果计算完成,我可以使用 If-Else-Block 来检查布尔值。但是如何使视图类之外的线程中的视图无效?
标签: java android mysql android-asynctask