【发布时间】:2013-07-10 17:33:52
【问题描述】:
每当我使用 Geocode 类的反向地理编码来获取当前城市名称时,整个用户界面都会冻结片刻,直到返回响应。我该如何避免这个问题?
【问题讨论】:
-
您可能希望在单独的线程中而不是在 UI 线程中执行此操作。
-
在后台线程(AsyncTask)中进行地理编码
每当我使用 Geocode 类的反向地理编码来获取当前城市名称时,整个用户界面都会冻结片刻,直到返回响应。我该如何避免这个问题?
【问题讨论】:
您可能想使用AsyncTask:
private void doGeoCode(Location loc){
AsyncTask<Location,Void,String> task = new AsyncTask<Location,Void,String>(){
@Override
protected String doInBackground(Location... args) {
Location loc = args[0];
String address = "Unknown";
//--do geo code lookup--
return address;
}
@Override
protected void onPostExecute(String address){
//--set some TextView's text etc.
}
};
task.execute(loc);
}
【讨论】: