所以我想申请目前的职位。下面的代码运行良好
String stringAddress = ""; public void getLocation(View view){ final LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria kriteria = new Criteria(); kriteria.setAccuracy(Criteria.ACCURACY_FINE); kriteria.setAltitudeRequired(false); kriteria.setBearingRequired(false); kriteria.setCostAllowed(true); kriteria.setPowerRequirement(Criteria.POWER_LOW); final String provider = lm.getBestProvider(kriteria, true); final Location lokasi = lm.getLastKnownLocation(provider); updateWithNewLocation(lokasi); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 5, ll); edittext_position.setText(stringAddress); } private void updateWithNewLocation(Location if(lokasi != null){ double lat = lokasi.getLatitude(); double lng = lokasi.getLongitude(); Geocoder gc = new Geocoder(this, Locale.getDefault()); try{ List addresses = gc.getFromLocation(lat, lng, 1); StringBuilder sb = new StringBuilder(); if(addresses.size()>0){ Address address = addresses.get(0); sb.append(address.getAddressLine(0)); stringAddress= sb.toString(); } } catch (Exception e){ } } } private final LocationListener ll = new LocationListener() { public void onStatusChanged(String provider, int status, Bundle extras) { } public void onProviderEnabled(String provider) { } public void onProviderDisabled(String provider) { updateWithNewLocation(null); } public void onLocationChanged(Location location) { updateWithNewLocation(location); } }
但问题是每次调用getLocation()函数时,应用程序在返回结果之前会挂起几秒钟。我知道使用aSyncTask来解决这个问题,但我不知道如何开始。感谢你的帮助。
谢谢
RequestLocationUpdates()
是异步的,它不会阻止您的应用程序。它在后台轮询位置,然后调用侦听器。
但是,GC.getFromLocation()不是。这很可能是你滞后的原因
创建一个新的asynctask
,Eclipse会建议您重写这些方法
@Override
protected List<String> doInBackground(String... params) {
// this is done in the background so it won't block the UI. The return type must be set to List<String> (I think default is just String)
return gc.getFromLocation()
}
@Override
protected void onPostExecute(List<String> adresses) {
// called when the GC work is finished. You can now use your list of addresses and display them
}
不要忘记对任务调用execute()
。
这是我应用程序中的片段:
public void getCurrentLocation(final ListenerGetCurrentLocation listenerGetCurrentLocation) {
new AsyncTask<Void, Void, List<Address>>() {
@Override
protected List<Address> doInBackground(Void... voids) {
Geocoder geo = new Geocoder(instance);
List<Address> listAddresses = null;
Criteria criteria = new Criteria();
String bestProvider = locationManager.getBestProvider(criteria, true);
if (bestProvider == null) {
bestProvider = LocationManager.NETWORK_PROVIDER;
}
Location location = locationManager.getLastKnownLocation(bestProvider);
try {
if (location != null) {
listAddresses = geo.getFromLocation(location.getLatitude(),
location.getLongitude(),
1);
}
} catch (IOException e) {
e.printStackTrace();
}
return listAddresses;
}
public void onPostExecute(List<Address> listAddresses) {
Address _address = null;
if ((listAddresses != null) && (listAddresses.size() > 0)) {
_address = listAddresses.get(0);
GeoPoint currentPosition = new GeoPoint(((int)(_address.getLatitude() * 1E6)),
((int)(_address.getLongitude() * 1E6)));
}
}
}.execute();
}
问题内容: 我有一个查询,用于查找按位置排序的结果。结果还必须考虑增值税,因此这也在查询中。不幸的是,该查询在未缓存时可能需要4秒钟以上的时间才能运行。谁能发现任何明显的问题或建议我做些什么来改善它? 只是为了澄清查询中正在发生的事情: 计算的距离是使用经/纬度的欧几里得距离 当包含增值税时,incvat字段用于显示价格 WHEN / THEN语句用于将价格0置于最底端 查询: 问题答案: 您可以
该问题出现在IntellJ 14.1.4社区版中。Gradle直到今天都能很好地构建项目,同样的代码在其他机器上也能很好地构建。 我得到了这个错误:“找不到ormlite-core-4.48.jar(com.j256.ormlite:ormlite-core:4.48)。在以下位置搜索:https://repo1.maven.org/maven2/com/j256/ormlite/ormlite-
操作步骤: ①以编辑状态进入地图,点击左侧图例面板中要使用的图层,所选图层的边缘显示为蓝色,表示新添加的标注将绘制在此图层上。 ②点击地图右上方工具栏上的"搜索"图标。 ③弹出搜索框。 ④在搜索框内输入关键字(如:天安门)后,点击搜索/回车。 ⑤在左边的搜索结果列表框中选择正确的地点,点击信息窗上的"添加点"按钮。 ⑥点击"完成"添加记录成功。 操作动图: [查看原图]
public void drop(字符串名称)--如果合适,从ArrayList中移除该项,并将其添加到当前房间。使用以下选项之一更新游戏的消息:1)玩家没有持有该项目,2)房间已经有一个项目,或者3)玩家已经成功地将该项目放入房间。这是此方法的目标,但当我运行它时,它总是跳到else语句中的currentMessage。 问题:我遇到的问题是,当我运行这个方法并试图将一个项目放到房间中时,它没有
问题内容: 这似乎是一个简单的问题,但是我以前找不到它(这个和这个很接近,但是答案不是很好)。 问题是:如果我想在df中 某处 搜索值(我不知道它在哪一列中),然后返回所有具有匹配项的行。 什么是Pandaic最有效的方法?还有什么比: ? 问题答案: 您可以对整个DataFrame执行相等比较: 另一个选择是使用比较:
我不知道为什么我会看到这种行为。我在APNS有效载荷中使用loc键和loc参数。当没有参数时,它工作正常: "你的技术人员到了" 当我填充loc参数时,ios会在通知中添加换行符和括号: “你的技术,( 胜利者 ),已经到了” 这是我发送的有效载荷: {“APN”:{“loc键”:“到达键”,“loc参数”:[“Victor”],“徽章”:0,“声音”:“钟声”} 有人有什么想法吗?