我有一个连接到互联网的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,并可能导致其给出“无响应-强制关闭/等待”的信息。
mylat
和mylong
设置为该类中的变量您可以通过传递mylat
和mylong
作为参数的方式覆盖AsyncTask类的构造函数。在构造函数中,将参数另存为AsyncTask的成员变量。这样做,您应该能够在doInBackground()方法中访问它们。