In this post, we will see the ways of detecting memory leaks in Android and…
Battery Optimization Secrets in Android Apps
Developing Android applications doesn’t simply include consideration of better Processes and Services, it also requires few other quality checks. One among them is considering battery usage.
It’s not a simple subject to avoid since it is also a major cause of retention of users. Simply imagine yourself downloading and installing a new app from the play store and you find your battery drained in the next couple of hours; then what, the next thing you will do is to uninstall the app, no matter what content the app provides you.
Here are few tips to improve your battery life in an android application
1. Try to reduce network call methods
Try to reduce network call methods in your code as far as possible. Instead, write down a snippet to Cache the data on first download and use it when the data is needed the next time.
Another best practice is to batch the network calls. Batching the network calls whenever possible helps prevent the device from waking up and sleeping down every often
2. Use wake locks only if needed
If you are using wake lock in your code, it is not considered a good idea most of the time. For reduced power consumption, always try to avoid wake lock. So what if you need to put your app awake on devices without draining users phone batteries? Well, that is not possible to keep the screen awake in no power.
But there is an alternate! You can use “ android:keepScreenOn="true" ” instead of WAKE_LOCK.
1 2 3 4 5 6 |
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout> |
It is the same as using FLAG_KEEP_SCREEN_ON in code. You may use either. It’s upto you using them.
Here’s an example:
1 2 3 4 5 6 7 |
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } |
3. Use AlarmManager class very brainly
Don’t use frequent alarm calls. This wakes up the device in random times which also drain the battery backup at the mean time.
Better avoid your sync operation basing on clock time. Use ELAPSED_REALTIME alarm type if possible since scaling may not always do well if it is based on clock time.
4. Put Wifi connectivity and Mobile data connectivity their separate rules
Code the different rules to be optimized for each of them, so that your app may consume less power while using wifi connection compared to the power consumption by Mobile data.
5. Check all your background services
A background service may consume much amount of power if it becomes buggy at times. Since a service can restart itself even after it is killed externally, it is not a good idea to use them unless you really need it in your app.
6. GPS is a battery drainer
Don’t use GPS often in your app. But what to do if your app needs GPS to be turned ON to work? Well, you may try the tricks followed by apps like OLA cabs.
Follow this StackOverflow answer to read more
https://stackoverflow.com/questions/4721449/how-can-i-enable-or-disable-the-gps-programmatically-on-android/33555732#33555732
So how can I test if my app eats up a lot of energy?
Battery Historian
Use Battery Historian tool! The tool will display details of your phone’s battery usage in an HTML view.
It will inspect the battery stats and also show the statistics of all the events that were run after the device was plugged off the supply.
For more information on the topic, read out the Official Google documentation here
https://developer.android.com/studio/profile/battery-historian.html
This Post Has 0 Comments