FIX battery Drain in MIUI - after OTA or after reset to factory settings!

Probably each of you was faced with high battery consumption in the first 3-4 days after updating or flashing the device, the android system is the first in the list of consumption and has 30-40% of use! This guide will help to remove this problem.
It should be after flashing or installing updates on older versions of Android starting from 6 and below.
You have encountered such a system dialog as "Optimizing app xx from xx"

In Android 7.0, did they hide this from the user's eyes or delete it? Does this mean that the optimization has been removed? No, this is not such. This option was not lost, but simply postponed, and the postponement of this task causes the battery to run out. Do you think that optimization is happening in the background? The answer is not correct. It only starts under special conditions. Lack of this optimization will drain the battery. Optimization is not performed because we do not know how to fulfill the conditions necessary for its launch. The consequence of this is the accelerated discharge of the phone.


You can often watch how the Android system consumes energy more than other applications. This is the result of not allowing the system to optimize.
If in Android 6 and earlier optimization was forced, then starting with Android 7 and higher. A new option was added to skip this step and optimize applications on the fly (JIT, Just-In-Time) while using applications.
At the same time, the initial optimization has not been deleted and only starts if the following conditions are met:
  • the phone is connected to the charger,
  • fully charged,
  • turned on (the phone itself, not the screen),
  • is not used,
  • inactive (like after at least 30 minutes).

If these conditions are met, optimization begins.

Why do we need this optimization?

Because application developers cannot do this for each set of hardware and each device is already. It compiles applications into the most efficient code for its processor. So just use your device and let it take care of the cache itself or help your device make full optimization with simpl command.
Quick note
People who dirty flash a lot. You might randomly experience longer app launch times after flashing a ROM and the only apparent way to fix it was to do a clean flash. I experienced this a few times and decided to investigate and saw that it had something to do with how dex2oat works after you dirty flash (it refuses to optimise properly?).

You can manually run dex2oat on everything after it booted into the system, and after it has finished the process (could take super long depending on how many apps you have), everything went back to its speedy state.

(And it seems improve idle drain (big battery usage by system), because we're forcing doing task that only can run if some condition only, but also sometimes can unexpectedly happens while phone was idle, o it's causing huge idle drain usage)

Be that as it may, you have the option to force the optimization to run.

For users with root:
open a terminal emulator and execute (along with quotation marks, as this is part of the command):
su -c "cmd package bg-dexopt-job"




"cmd package bg-dexopt-job"

If you don’t have root, use ADB. Connect the phone to the device, make sure it is available (enable USB debugging and USB debugging secure settings). Open CMD ADB platform-tools

3.97 MB Downloads:

and write command one by one
adb devices

Run the following command
adb shell cmd package bg-dexopt-job

adb shell "cmd package bg-dexopt-job"

If you have 10 android you will see Success, if from 7 to 9 a new line for entering the command will simply appear!


The process can take from 20 minutes to 3 hours (on my  MI 9t this operation take 40 minutes).
Disconnecting the device during optimization will interrupt the process, but will not harm the device. It is absolutely safe.
Users without root may find the error message
"user 2000 nor current process has Android.permission.Update_Device_Stats"

It’s not worth worrying, you can ignore it and run the command again.

Post a Comment

Previous Post Next Post