Как получить значение переменной в активном сервисе Android? - PullRequest
0 голосов
/ 12 октября 2018

В моем приложении есть служба, которая обрабатывает соединение Bluetooth, и когда этап завершается, изменяется переменная типа (int).

Например:

public static final int S_STATE_CONNECTED = 3;
public static final int S_STATE_CONENECTION_LOST = 4;
int State;

private final class CountHandler extends Handler{
CountHandler(Looper looper){
    super(looper);
}
@Override
public void handleMessage(Message msg){

    connect();  //Here int State Changes

}

процесс подключения:

public void connect(){
    //some process
    State = S_STATE_CONNECTED;
    Intent resultIntent = new Intent(ACTION_BT_SERVICE_CONNECTED);
    resultIntent.putExtra("addressDevice",nameAddress);
    resultIntent.putExtra("nameDevice",nameDevice);
    localBroadcastManager.sendBroadcast(resultIntent);
}

В моем сервисе я отправляю эти данные с LocarBroadcastManager и в своей деятельности я обрабатываю их с помощьюBroadcastReceiver и в зависимости от того, что я получаю, я изменяю пользовательский интерфейс.

Я хотел бы получить значение State, которое указывает на различные состояния моего соединения, так что, когда я начинаю другую деятельность, я знаютекущее состояние моего подключения и показать соответствующую информацию.

1 Ответ

0 голосов
/ 12 октября 2018

В вашем методе подключения добавьте это

public void connect(){
    //some process
    State = S_STATE_CONNECTED;
    Intent resultIntent = new Intent(ACTION_BT_SERVICE_CONNECTED);
    resultIntent.putExtra("addressDevice",nameAddress);
    resultIntent.putExtra("nameDevice",nameDevice);
    //send your state as extra 
    resultIntent.putExtra("currentState",State);
    localBroadcastManager.sendBroadcast(resultIntent);
}

В своем пользовательском интерфейсе вы можете получить это дополнительное и соответственно обновить свой пользовательский интерфейс.

...