андроид bindservice

Я получаю исключение нулевого указателя в строке mService.start (), когда я пытаюсь связать с уже запущенным сервисом. Я делаю то же самое от другого действия (где сервис начинает), everythig, идет право. Все эти операции являются частью одного приложения.

Что Вы думаете, что я делаю неправильно?

public class RouteOnMap extends MapActivity{
    private static final int NEW_LOCATION = 1;
    private static final int GPS_OFF = 2;

    private MapView mMapView;
    private ILocService mService;
    private boolean mServiceStarted;
    private boolean mBound;
    private Intent mServiceIntent;
    private double mLatitude, mLongitude;

    private ServiceConnection connection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder iservice) {
            mService = ILocService.Stub.asInterface(iservice);
            mBound = true;
        }

        public void onServiceDisconnected(ComponentName className) {
            mService = null;
            mBound = false;
        }

    };

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mapview);

        mMapView = (MapView) findViewById(R.id.mapview);
        mMapView.setBuiltInZoomControls(true);      
        mServiceIntent = new Intent();
        mLatitude = 0.0;
        mLongitude = 0.0;
        mBound = false;
    }

    @Override
    public void onStart(){
        super.onStart();

        mServiceIntent.setClass(this, LocationService.class);
        //startService(mServiceIntent);
        if(!mBound){
            mBound = true;
            this.bindService(mServiceIntent, connection, Context.BIND_AUTO_CREATE);
        }
    }

    @Override
    public void onResume(){
        super.onResume();


        try {
            mService.start();
        } catch (RemoteException e) {
            e.printStackTrace();
        }

    }

    @Override
    public void onPause(){
        super.onPause();

        if(mBound){
            this.unbindService(connection);
        }
    }

    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }

}
7
задан mnish 15 May 2010 в 23:24
поделиться

1 ответ

У вас нет возможности узнать, привязана ли служба к onResume () . bindService () не является блокирующим вызовом. Вызовите mService.start () из вашего метода onServiceConnected () .

9
ответ дан 7 December 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: