2017-06-17 4 views
-4

私は、ユーザーの現在の場所を取得するアプリケーションを作成しています。現在の場所を取得するメソッドが開始されます。この方法はバックグラウンドで継続的に実行されていますが、この方法を停止することはできません。だから、私は停止したいときに場所の取得方法を停止する方法

おかげで.. ..

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"); 


     } 

    } 

} 


} 

私は停止したい場合は、この方法を停止することが、私はホ教えてください....この使用して、次のコードを停止する方法を教えてください

+2

[実行中のAsyncTaskをキャンセルする理想的な方法]の複写が可能です(https://stackoverflow.com/questions/2735102/ideal-way-to-cancel-an-executing-asynctask) – Tigger

+0

asyncTaskをキャンセルする方法を教えてください私 –

答えて

0
fetchCordinates.cancel(); 

このmethod.Itがあなたの非同期タスク

0

ちょうど

fetchCordinates.cancel(true); 
を呼び出して停止します使用します

パラメータは、mayInterruptIfRunningと呼ばれます。名前のとおり、進行中のタスクは、falseを渡すと完了することができます。

+0

非同期TAskはこのメソッドを使用して停止しません –

関連する問題