Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 此任务的参数、进度和结果应该是什么_Android_Android Asynctask - Fatal编程技术网

Android 此任务的参数、进度和结果应该是什么

Android 此任务的参数、进度和结果应该是什么,android,android-asynctask,Android,Android Asynctask,我试图通过点击按钮找到android设备的当前位置。Geocoder在UIThread中运行时会挂起UI,因此我必须在后台线程上运行它。我不熟悉异步任务。到目前为止,我有这行代码,但我确实不知道参数、进度和结果必须是什么。我不希望输入任何内容,也不希望没有任何进展,只希望结果是一个表示当前地址的字符串 先谢谢你 public void onClickGetCCity(View v){ new GetCurrentCity.execute(); } pri

我试图通过点击按钮找到android设备的当前位置。Geocoder在UIThread中运行时会挂起UI,因此我必须在后台线程上运行它。我不熟悉异步任务。到目前为止,我有这行代码,但我确实不知道参数、进度和结果必须是什么。我不希望输入任何内容,也不希望没有任何进展,只希望结果是一个表示当前地址的字符串

先谢谢你

    public void onClickGetCCity(View v){
    new GetCurrentCity.execute();
    }  
       private class GetCurrentCity extends AsyncTask<Void, Void, Void>{



        @Override
                protected void doInBackground(Void... params) {

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);


Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROV

IDER);
                double longitude = location.getLongitude();
                double latitude = location.getLatitude();
                if(Geocoder.isPresent()){

                    Geocoder gcd = new Geocoder(getApplicationContext(), Locale.getDefault());
                    try {
                        List<Address> addresses = gcd.getFromLocation(latitude, longitude, 1);
                        if(addresses != null) {
                            Address returnedAddress = addresses.get(0);

                            for(int i=0; i<returnedAddress.getMaxAddressLineIndex(); i++) {
                           strReturnedAddress = (returnedAddress.getAddressLine(i)).toString();
public void onClickGetCCity(视图五){
新建GetCurrentCity.execute();
}  
私有类GetCurrentCity扩展异步任务{
@凌驾
受保护的void doInBackground(void…参数){
locationManager.RequestLocationUpdate(locationManager.NETWORK\u提供程序,0,0,locationListener);
Location Location=locationManager.getLastKnownLocation(locationManager.NETWORK\u PROV
IDER);
double longitude=location.getLongitude();
双纬度=location.getLatitude();
if(Geocoder.isPresent()){
Geocoder gcd=新的地理编码器(getApplicationContext(),Locale.getDefault());
试一试{
列表地址=gcd.getFromLocation(纬度,经度,1);
如果(地址!=null){
返回的地址地址=地址。获取(0);

对于(int i=0;i而言,第一个参数化类型是doInBackground()的输入。第二个是onProgressUpdate()的输入。第三个是onPostExecute()的输入。您不需要使用所有类型(这意味着您可以将一个或多个类型保留为Void)


这个类的javadoc有一个例子解释了这一切是如何工作的:

第三个类型参数应该是
String
。因此
doInBackground
的签名是:

public String doInBackground(Void... params)
获取地址字符串后,从
doInBackground
返回它:

return strReturnedAddress;
实现方法
onPostExecute(字符串结果)
。由于它在UI线程上运行,因此可以在
TextView
或toast消息中显示结果