如何在活动的android服务中获取变量的值?

时间:2018-10-12 01:49:54

标签: android android-studio service

在我的应用程序中,我有一个处理蓝牙连接的服务,并且在完成阶段后,类型(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处理它们,并根据我收到的内容修改了UI。

我想获得State的值,该值指示我的连接的不同状态,以便当我开始另一个活动时,我知道我的连接的当前状态并显示相应的信息。

1 个答案:

答案 0 :(得分:0)

在您的connect方法中添加此

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);
}

在您的UI活动中,您可以得到更多,并相应地更新您的ui。