应该何时进行(可能)更长的任务?

时间:2011-02-10 18:08:32

标签: android geocoding

我的应用中有2个标签,一个抓取我的联系人并对他们的邮政编码进行地理编码,另一个标签在地图上绘制。

地理编码过程可能非常耗时。处理这种长度过程的最佳做法是什么?

我应该在应用启动时设置加载栏并执行所有地理编码,还是应该强制用户点击按钮进行地理编码?

1 个答案:

答案 0 :(得分:1)

您应该将任何超过200毫秒的操作移动到一个单独的线程上,这样应用程序就不会锁定,然后从该线程更新指示器以显示用户进度。

您需要了解AsyncTask类,它对编写自适应Android应用程序至关重要。

http://developer.android.com/reference/android/os/AsyncTask.html

这是一个非常简单的包装,而不是简单的线程化。记得在不再需要线程时停止线程,例如在onPause()。

我倾向于将AsyncTask子类放入它们自己的类文件中(而不是作为内部类)并将它们作为构造函数参数传递给它们,因此AsyncTask线程总是可以轻松访问活动来更新用户界面(但是不是来自doInBackground)。

AsyncTask的一些限制

http://foo.jasonhudgins.com/2010/05/limitations-of-asynctask.html