Не удается получить json, если приложение убито с помощью фонового сервиса (когда телефон работает нормально, а не usb с android studio) - PullRequest
0 голосов
/ 08 января 2019

Я получаю ответ json от фоновой службы. Когда мое приложение открыто или свернуто, все работает хорошо, но когда я убиваю приложение, фоновая служба все еще работает, но не получает никакого ответа json (я вижу это из моих журналов). ). Почему это происходит? Тостовые сообщения отображаются нормально, когда приложение убито.

Вот мой код службы фона

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    Toast.makeText(this, "Service created!", Toast.LENGTH_LONG).show();

    handler = new Handler();
    runnable = new Runnable() {
        public void run() {
            createNotificationChannel();
            new getJson().execute("https://gekon.technologypark.cz/api/v1/notification/");
            Toast.makeText(context, "Service is still running", Toast.LENGTH_LONG).show();
            handler.postDelayed(runnable, 10000);
        }
    };

    handler.postDelayed(runnable, 15000);
}

@Override
public void onDestroy() {
    /* IF YOU WANT THIS SERVICE KILLED WITH THE APP THEN UNCOMMENT THE FOLLOWING LINE */
    //handler.removeCallbacks(runnable);
    Toast.makeText(this, "Service stopped", Toast.LENGTH_LONG).show();
}

@Override
public void onStart(Intent intent, int startid) {
    Toast.makeText(this, "Service started by user.", Toast.LENGTH_LONG).show();
}

class getJson extends AsyncTask<String, String, String> {

    @Override
    protected String doInBackground(String... strings) {

        URL obj = null;

        try {
            obj = new URL("https://gekon.technologypark.cz/api/v1/notification/");
            HttpsURLConnection conn = (HttpsURLConnection) obj.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("ApiSecret", LoginInfo.ApiSecret);
            conn.connect();
            BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
            StringBuilder sb = new StringBuilder();
            String output;
            while ((output = br.readLine()) != null)
                sb.append(output);

            JSONObject jsonObj = new JSONObject(sb.toString());
            Log.d("test", "response" + jsonObj);

            JSONObject dataObj = jsonObj.getJSONObject("data");
            Log.d("test", "TEST LENGHT" + dataObj.length());

            Iterator keys = dataObj.keys();

            while (keys.hasNext()) {
                // loop to get the dynamic key
                String currentDynamicKey = (String) keys.next();

                // get the value of the dynamic key
                JSONObject data = dataObj.getJSONObject(currentDynamicKey);
                // do something here with the value...
                body = data.getString("body");
                Log.d("test", "TEST ID" + body);

                pushNotification(body);
            }

        } catch (Exception e) {
            e.printStackTrace();
            Log.d("test", "PUSH CATCH" + e);


        }
        return null;
    }
}

UPDATE

Я обнаружил проблему. Это был ApiSecret, который был нулевым, поэтому я сохранил его в sharedPreferences, и все было в порядке ДО Я удалил USB, который я тестирую мое приложение с моей андроид-студии. Когда я удалите его, у него все еще есть проблема, но если он у меня подключен, он работает нормально ... Почему это так?

...