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. FutureTask.java:223) на java.util.concurrent.FutureTask.run (FutureTask.java:242) на android.os.AsyncTask$SerialExecutor$1.run (AsyncTask.java:234) на java.util.concurrent.Thread.runWorker (ThreadPoolExecutor.java:1113) в java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588) в java.lang.Thread.run (Thread.java:818), вызванный: java.lang.Exr. в.call (AsyncTask.java:295) в java.util.concurrent.FutureTask.run (FutureTask.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;
}
}
}
1 ответ
В xiaomi телефоны в фоновом режиме ограничены для включения
Setting
-> 'Apps' ->
установленные приложения-> 'Your App
-> Background Restrictions
-> No Restriction
Это связано с тем, что xiaomi по умолчанию использует оптимизацию Baterry для каждого приложения.
Проверьте эту ссылку здесь, например
Используйте данный код для перехода на страницу настроек
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
Снять ограничения.