我的应用中有2个标签,一个抓取我的联系人并对他们的邮政编码进行地理编码,另一个标签在地图上绘制。
地理编码过程可能非常耗时。处理这种长度过程的最佳做法是什么?
我应该在应用启动时设置加载栏并执行所有地理编码,还是应该强制用户点击按钮进行地理编码?
答案 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