私は、ユーザーの現在の場所を取得するアプリケーションを作成しています。現在の場所を取得するメソッドが開始されます。この方法はバックグラウンドで継続的に実行されていますが、この方法を停止することはできません。だから、私は停止したいときに場所の取得方法を停止する方法
おかげで.. ..
public class Location extends Fragment{
String latitude, longitude;
double lt, lg;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v;
v = inflater.inflate(R.layout.fragment_attendance, container, false);
}
public boolean startService() {
try {
FetchCordinates fetchCordinates = new FetchCordinates();
fetchCordinates.execute();
return true;
} catch (Exception error) {
return false;
}
}
public class FetchCordinates extends AsyncTask<String, Integer, String> {
public double lati = 0.0;
public double longi = 0.0;
public LocationManager mLocationManager;
public VeggsterLocationListener mVeggsterLocationListener;
@Override
protected void onPreExecute() {
mVeggsterLocationListener = new VeggsterLocationListener();
mLocationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mLocationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 0, 0,
mVeggsterLocationListener);
}
@Override
protected void onCancelled() {
System.out.println("Cancelled by user!");
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mLocationManager.removeUpdates(mVeggsterLocationListener);
}
@Override
protected void onPostExecute(String result) {
pDialog.dismiss();
/*Toast.makeText(getActivity(),
"LATITUDE :" + lati + " LONGITUDE :" + longi,
Toast.LENGTH_LONG).show();*/
lt=lati;
lg=longi;
latitude= String.valueOf(lati);
longitude= String.valueOf(longi);
getAddress();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
while (this.lati == 0.0) {
}
return null;
}
public class VeggsterLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
/*int lat = (int) location.getLatitude(); // * 1E6);
int log = (int) location.getLongitude(); // * 1E6);
int acc = (int) (location.getAccuracy());*/
//String info = location.getProvider();
try {
// LocatorService.myLatitude=location.getLatitude();
// LocatorService.myLongitude=location.getLongitude();
lati = location.getLatitude();
longi = location.getLongitude();
lt=lati;
lg=longi;
latitude= String.valueOf(lati);
longitude= String.valueOf(longi);
//Toast.makeText(getActivity(), "data is.." + lati + "," + longi, Toast.LENGTH_LONG).show();
getAddress();
} catch (Exception e) {
// progDailog.dismiss();
// Toast.makeText(getApplicationContext(),"Unable to get Location"
// , Toast.LENGTH_LONG).show();
}
}
@Override
public void onProviderDisabled(String provider) {
Log.i("OnProviderDisabled", "OnProviderDisabled");
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
Log.i("onStatusChanged", "onStatusChanged");
}
}
}
}
私は停止したい場合は、この方法を停止することが、私はホ教えてください....この使用して、次のコードを停止する方法を教えてください
[実行中のAsyncTaskをキャンセルする理想的な方法]の複写が可能です(https://stackoverflow.com/questions/2735102/ideal-way-to-cancel-an-executing-asynctask) – Tigger
asyncTaskをキャンセルする方法を教えてください私 –