服务不起作用?

时间:2012-05-12 16:06:37

标签: android service gps

我有BrodcastReceiver运行的服务,它假设运行并向我提供我请求的GPS数据,并且在我做了假设完成之后我停止了它,但是我注意到它没有向我提供所请求的数据并且也没有停止,任何身体都可以帮助我解决我的问题 代码如下,并在真实设备中测试服务:

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.SystemClock;
import android.widget.Toast;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

public class GpsService extends Service implements LocationListener{
    static LocationManager mlocManager;

    }    
    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }
    public void onCreate() {

    }

    @Override
    public void onDestroy() {

    }

    @Override
    public void onStart(Intent intent, int startid) {
        mlocManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
        mlocManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,0, 0,this);

    }

        @Override
    public void onLocationChanged(Location loc)
    {
    loc.getLatitude();
    loc.getLongitude();
    String Text = "My current location is: " +"Latitud = " + loc.getLatitude() +"Longitud = " + loc.getLongitude();
   Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show(); 
    // Here to stop the service and make it finish its task
    SystemClock.sleep(40000);
    // stop the Gps system by this application
    mlocManager.removeUpdates(this);
    //Here to stop the service by itself
    stopSelf();

    }
    @Override
    public void onProviderDisabled(String provider)
    {
    Toast.makeText( getApplicationContext(),"Gps Disabled",Toast.LENGTH_SHORT ).show();
    }

    @Override
    public void onProviderEnabled(String provider)
    {
    Toast.makeText( getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
    }
    @Override

    public void onStatusChanged(String provider, int status, Bundle extras)
    {
    }


}

1 个答案:

答案 0 :(得分:0)

  1. 你对清单有正确的权限吗?
  2. 为什么要让服务长时间睡眠?该服务在UI线程上工作,这样的事情可能导致服务在大约5秒后被系统自动杀死,因为ui线程没有响应。
  3. 如果您希望延迟停止和/或显示吐司,请使用Handler(和postDelayed),或使用asyncTask或您自己的东西。
  4. 你开启了gps吗?您是否考虑过使用假冒的位置应用程序或模拟器来完成此任务?
  5. 祝你好运。