Android中带有onLocationChanged(Location loc)和ASync任务的问题

问题描述 投票:0回答:2

我有一个连接到互联网的android应用,可以实时对经纬度和经纬度进行反向地理编码。这使UI滞后,并可能导致它给出“不响应-强制关闭/等待”错误(按预期,不使用async / threads-handlers!)

我实现了一个异步任务,该任务运行良好(不再有UI滞后!),但是无法访问onLocationChanged方法内设置的变量(将其设置为纬度和经度)。我正在执行的类链接到另一个单独的类,该类传递变量并可以向包含反向地理编码地址的人发送短信。但是,由于使用doinbackground方法实现了异步任务,因此我无法再发送所需的信息。我不知道我是否可以更好地解释,我将提供示例代码。

public void onLocationChanged(Location loc){
    mylat = loc.getLatitude();
    mylong = loc.getLongitude();
}

/*
afaik, this is the code that does the internet stuff, that lags the 
UI.  If I put this in doinbackground, it cannot access mylat & my long, 
and the "loc.getLatitude" has to be done in the "onLocationChanged" 
method, which HAS to exist. If I leave the ListAddress code outside the 
doinbackground, everything works, BUT the UI will obviously lag.
*/
List<Address> addresses = geoCoder.getFromLocation(mylat,mylong, 1); 

任何人都可以建议在doinbackground方法内获取mylat = loc.getLatitude(); & mylat = loc.getLatitude();的最佳方法吗?

我有一个连接到互联网的android应用,可以实时对经纬度和经纬度进行反向地理编码。这会滞后于UI,并可能导致其给出“无响应-强制关闭/等待”的信息。

android android-asynctask reverse geocode
2个回答
3
投票
  1. 覆盖您的AsyncTask的构造函数,并将mylatmylong设置为该类中的变量

1
投票

您可以通过传递mylatmylong作为参数的方式覆盖AsyncTask类的构造函数。在构造函数中,将参数另存为AsyncTask的成员变量。这样做,您应该能够在doInBackground()方法中访问它们。

© www.soinside.com 2019 - 2024. All rights reserved.