将方法转换为异步方法的java帮助
我正在尝试将应用程序中的方法转换为异步方法。这是一种在谷歌地图视图上加载大量自定义标记的方法。我需要使其异步,以便在加载标记时立即显示视图
有人能帮我指点一下如何将下面的方法转换成异步方法吗?我正在努力理解这个概念。多谢各位
private void showpins() throws IOException {
SQLiteDatabase db = mDbHelper.getReadableDatabase();
Cursor mCursor = db.query(TABLE_NAME, null, null, null, null, null, null);
startManagingCursor(mCursor);
while (mCursor.moveToNext()) {
Address = mCursor.getString(4);
Name = mCursor.getString(0);
String noSpaces = Address.replaceAll(" ", "+");
JSONObject geocoded = getLocationInfo(noSpaces);
GeoPoint point = getGeoPoint(geocoded);
List<Overlay> mapOverlays = mapView.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.pushpin);
CustomizedItemOverlay itemizedOverlay =
new CustomizedItemOverlay(drawable, this);
OverlayItem overlayitem =
new OverlayItem(point, Name, Address);
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
}
}
# 1 楼答案
不久前我也做过类似的事情。然而,它遇到了为每个图像创建新线程的问题,因此最终崩溃。这对我来说是必要的(有点),但如果你没有从互联网上获取图像,你应该可以不用它。这是密码-
主要活动是——
# 2 楼答案
我不确定你发布的方法调用的所有方法都做了什么,但我假设只有对mapOverlays的调用会影响UI,其他一切都可能发生在后台。您可以将其转换为类似这样的异步任务(我认为最好是作为一个内部类):