Android HTTP Post запрос в фоновом режиме - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть метод, который обнаруживает состояние вызова и отправляет его в БД, но только при активности на переднем плане.Как я могу продолжить работу метода, когда приложение находится в фоновом режиме?Как и что я должен изменить, чтобы он работал, когда приложение переходит в фоновый режим?

Здесь я вызываю метод в onCreate () MainActivity:

callStateListener = new PhoneStateListener() {
            public void onCallStateChanged(final int state, String incomingNumber) {

                switch (state){
                    case TelephonyManager.CALL_STATE_IDLE:
                        Log.i(TAG, "onCallStateChanged: IDLE = "+state);
                        if (token!=null) {
                            updateState(token, String.valueOf(state));
                        }else {
                            Log.i(TAG, "onCallStateChanged: ERROR");
                        }
                        break;

                    case TelephonyManager.CALL_STATE_RINGING:
                        Log.i(TAG, "onCallStateChanged: RING = "+state);
                        if (token!=null) {
                            updateState(token, String.valueOf(state));
                        }
                        break;
                    case TelephonyManager.CALL_STATE_OFFHOOK:
                        Log.i(TAG, "onCallStateChanged: CALL = "+state);
                        if (token!=null) {
                            updateState(token, String.valueOf(state));
                        }
                        break;
                }
            }
        };

Это метод:

private void updateState(String token, String state) {
        Log.i(TAG, "updateState: state"+state);
        OkHttpClient client = new OkHttpClient();
        RequestBody body = new FormBody.Builder()
                .add("token", token)
                .add("state", state)
                .build();

        Request request = new Request.Builder()
                .url("http://update.php")
                .post(body)
                .build();

        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d("OkHttp", call.toString());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()) {
                    String responseStr = response.body().string();
                    Log.d("OkHttp", responseStr);
                }
            }
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...