Android中的线程和进度条?

时间:2015-08-25 03:32:35

标签: java android multithreading gps onresume

嘿伙计们,所以我试图在用户和他们可以看到的卡片上的某个地方显示gps距离。问题是,我认为主线程一次分裂或做两件事。在下面的代码中,Android在if(flag)语句中执行代码时进行祝酒...所以它在不获取用户坐标的情况下干扰GPS差异...如何使它成为如此,如果(flag)语句首先继续在if语句之后和之外做吐司?

@Override
public void onResume()
{
    super.onResume();
    ImagePath = getIntent().getStringExtra("imagePath");
    if(ImagePath == null)
    {
        Toast.makeText(this,"hello everyone",Toast.LENGTH_LONG).show();
    }
    if(newCardAdded)
    {
        flag = displayGpsStatus();
        if(flag)
        {
            editLocation.setText("Please!! move your device to" +
                    " see the changes in coordinates." + "\nWait..");
            pb.setVisibility(View.VISIBLE);
            locationListener = new MyLocationListener();//LocationListener actually physically gets your location
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);


        }
        else
        {
            alertbox("Gps Status!!", "Your GPS is: OFF");
        }
            Global_Class.getInstance().getValue().getlatitude = place_lat;
            Global_Class.getInstance().getValue().getlongitutde = place_lon;
            String gps_distance = String.valueOf(gps_difference(user_lon, user_lat,place_lon,place_lat));
            Toast.makeText(this, gps_distance, Toast.LENGTH_LONG).show();

    }

}

1 个答案:

答案 0 :(得分:1)

LocationManager#requestLocationUpdates

您的locationListener必须实施onLocationChanged(Location)方法,该方法将针对每个位置更新进行调用。然后计算距离并在该方法中祝酒。由于requestLocationUpdates(...)在另一个帖子中运行,因此无法确认它是否在Toast.makeText(...)之前完成,因此您必须使用MyLocationListener