我想知道关于如何停止调用方法,我把在OnCreate服务 [英] i want to know regarding how to stop calling method which i put in oncreate of service

查看:221
本文介绍了我想知道关于如何停止调用方法,我把在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆