我想知道关于如何停止调用方法,我把在OnCreate服务 [英] i want to know regarding how to stop calling method which i put in oncreate of service
本文介绍了我想知道关于如何停止调用方法,我把在OnCreate服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在这里的朋友。之后,我在我把onCreate方法在服务机器人还是方法调用销毁服务。
here friends. after i destroyed service in android still method call which i put in oncreate method in service.
这是我的code
package com.servicelistener;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import java.util.Timer;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
public class SimpleService extends Service {
Timer mytimer;
private String provider;
private LocationManager locationManager;
private LocationListener locationListener;
//LocationManager locationManager;
//LocationListener mlocListener;
//private Handler toasthandler = new Handler();
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
Toast.makeText(this,"Service created ...", Toast.LENGTH_LONG).show();
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new GPSLocationListener();
Criteria criteria = new Criteria();
//criteria.setAccuracy(Criteria.ACCURACY_COARSE);
//criteria.setAccuracy(Criteria.ACCURACY_FINE);
provider = locationManager.getBestProvider(criteria, true);
locationManager.requestLocationUpdates(provider, 60000, 0, locationListener);
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service destroy", Toast.LENGTH_LONG).show();
//mytimer.cancel();
}
private class GPSLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location location) {
if (location != null) {
GeoPoint point = new GeoPoint(
(int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
Toast.makeText(getBaseContext(),
"Latitude: " + location.getLatitude() +
" Longitude: " + location.getLongitude(),
Toast.LENGTH_SHORT).show();
//Toast.makeText(getBaseContext(),"hi", 8000).show();
String address = ConvertPointToLocation(point);
Toast.makeText(getBaseContext(), address, Toast.LENGTH_SHORT).show();
}
}
public String ConvertPointToLocation(GeoPoint point) {
String address = "";
Geocoder geoCoder = new Geocoder(
getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(
point.getLatitudeE6() / 1E6,
point.getLongitudeE6() / 1E6, 1);
if (addresses.size() > 0) {
for (int index = 0; index < addresses.get(0).getMaxAddressLineIndex(); index++)
address += addresses.get(0).getAddressLine(index) + " ";
}
}
catch (IOException e) {
e.printStackTrace();
}
return address;
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
}
销毁服务仍然得到应用后的位置。并获得applciaiton方法,我把服务的OnCreate methhod。我想停下来调用这个
after destroying service still getting location from application. and getting applciaiton method which i put in oncreate methhod of service. i want to stop calling this
推荐答案
好像你需要注销您的位置更新监听器。
It seems like you need to unregister your location updates listener.
考虑以下
@Override
public void onDestroy() {
super.onDestroy();
locationManager.removeUpdates(locationListener);
Toast.makeText(this, "Service destroy", Toast.LENGTH_LONG).show();
//mytimer.cancel();
}
这篇关于我想知道关于如何停止调用方法,我把在OnCreate服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文