2016-06-14 1 views
2

У меня проблема с start service после запуска кода.Android set прослушиватель для завершенного стартового обслуживания

мой класс обслуживания:

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent, flags, startId); 

    mApplication.setService(this); 
} 

Сейчас:

startService(intent); // service run sucess, but after millisecond delay 
mApplication.setIsServiceRunning(true); 

mApplication.getService().MyMethodAnyThing(); // <--- NullPointerExeption, because in my class mApplication.setService(this) do with delay and getService is null. 

мне нужно completed start service. Пример:

startService(intent); 
mApplication.setIsServiceRunning(true); 

// i need like listener 
@Override 
onServiceIsRunComplete() { 
     // here i'm sure that service is run 
     mApplication.getService().MyMethodAnyThing(); 
} 
+2

затем использовать 'bindService' и ждать' ServiceConnection' – pskink

+0

Это странно, потому что служба работает на том же потоке, как ваша деятельность –

+0

@TimCastelijns да, для меня странно – grizzly

ответ

1

Может быть что-то вроде этого,

protected ServiceConnection mServerConn = new ServiceConnection() { 
    @Override 
    public void onServiceConnected(ComponentName name, IBinder binder) { 
     Log.d(LOG_TAG, "onServiceConnected"); 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     Log.d(LOG_TAG, "onServiceDisconnected"); 
    } 
} 

public void start() { 
    mContext.bindService(intent, mServerConn, Context.BIND_AUTO_CREATE); 
    mContext.startService(intent); 
} 

Также не забудьте unbindService() при остановке службы.

Смежные вопросы