java.lang.RuntimeException: вызывается при выполнении doInBackground() только на устройстве Xiaomi

Магазин Google Play показывает сбой (я не могу воспроизвести) только на устройствах Xiaomi. Пожалуйста, найдите журналы сбоев ниже. Я пытался воспроизвести этот сбой и на устройстве Xiaomi, но не смог воспроизвести.

java.lang.RuntimeException: в android.os.AsyncTask$3.done (AsyncTask.java:309) в java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:354) в java.util.concurrent.FutureTask.setException ( FutureTask.java:223) в java.util.concurrent.FutureTask.run (FutureTask.java:242) в android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:234) в java.util.concurrent.ThreadPoolExecutor. runWorker (ThreadPoolExecutor.java:1113) в java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588) в java.lang.Thread.run (Thread.java:818) Вызвано: java.lang.ExceptionInInitializerError : в in.betterbutter.android.emoji.EmojiParse$ParseAsync.doInBackground (EmojiParse.java:30) в in.betterbutter.android.emoji.EmojiParse$ParseAsync.doInBackground (EmojiParse.java:19) в android.os.AsyncTask$2 .call (AsyncTask.java:295) в java.util.concurrent.FutureTask.run (FutureT спросите.java:237)

Вот мой код:

public class EmojiParse {

    public void parse(JSONObject jsonObject) {
        new ParseAsync().execute(jsonObject);
    }

    public class ParseAsync extends AsyncTask<JSONObject, Void, Void> {

        @Override
        protected Void doInBackground(JSONObject... params) {
            JSONObject jsonObject = params[0];
            try {
                JSONArray jsonArray = jsonObject.getJSONArray("emojis");
                for (int i = 0; i < jsonArray.length(); ++i) {
                    JSONObject object = jsonArray.getJSONObject(i);
                    String text = object.getString("text");
                    String code = object.getString("code");
                    String surrogates = StringEscapeUtils.unescapeJava(object.getString("surrogates"));


                    EmojiMap emojiMap = new EmojiMap();


                    emojiMap.hashSet.add(code);
                    emojiMap.displayMap.put(text, surrogates);
                    emojiMap.reverseMap.put(surrogates, text);

                }
            } catch (JSONException e) {
                e.printStackTrace();
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            return null;
        }
    }

}

person Akshat sharma    schedule 20.11.2017    source источник


Ответы (1)


В телефонах xiaomi работа в фоновом режиме ограничена для его включения

Setting -> 'Apps' ->установленных приложений-> 'Your App -> Background Restrictions -> No Restriction

Это связано с тем, что xiaomi по умолчанию использует оптимизацию батареи для каждого приложения.

Проверьте эту ссылку вот например

Используйте данный код для перехода на страницу настроек

Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);

Чтобы снять ограничения.

person Tomin B Azhakathu    schedule 20.11.2017
comment
мы можем сделать это программно?? - person Akshat sharma; 20.11.2017
comment
Боюсь, мы не можем. Это особенность их кастомизации в версиях MUI. попробуйте выше, является ли это проблемой. - person Tomin B Azhakathu; 20.11.2017
comment
Привет, я не могу воспроизвести этот сбой, при условии, что я тестирую на устройстве Xiaomi. - person Akshat sharma; 20.11.2017
comment
я думаю это не проблема - person Akshat sharma; 20.11.2017
comment
@ user8266276 проблема с оптимизацией, если вы не можете воспроизвести сбой. - person Tomin B Azhakathu; 20.11.2017
comment
Привет, Томин, я не думаю, что это решение, так как я наложил ограничение, но у меня не происходит сбой. - person Akshat sharma; 20.11.2017
comment
@user8266276 user8266276: тогда это может быть какая-то ошибка инициализации - person Tomin B Azhakathu; 20.11.2017
comment
можешь помочь с решением - person Akshat sharma; 20.11.2017