I. Handler:
Effective use during the course of survival, Google official recommended.
Simple and easy to use.
Stable and efficient.
II. Alarmmanager:
Use the system-level alarm clock service (holds wake Lock).
This is the best choice if you need an accurate timing task.
1. function
Run/Repeat the specified task at approximate intervals.
Specify the exact time interval to perform the task.
2. Characteristics
After registration, whether or not your application process exists/component exists, it will execute normally.
All registered alarm service will be reset after the system reboot, so if you need to ensure the task, you need to register receive_boot_complete, to ensure that after the restart, you can again register the task to the alarm clock service.
Alarmmanager deals with a pendingintent, so it's usually a service that starts a process transaction.
3. Notes
The official does not recommend network requests related to the use of Alarmmanager.
Considering the loss of electricity, it is recommended to use the approximate time in a special case, so Android will try to get several tasks packaged together to prevent frequent calls to the phone.
Iii. Job Scheduler:
- Jobscheduler Official documents
- It is recommended that network-related tasks be placed in job Scheduler.
- After the system restarts, the task remains in the job scheduler.
- Only in API21 or above system support
1. Advantages
- More energy savings
- More efficient
- More usable
2. Explicit designation of specific scenario execution (Jobinfo):
Because multiple tasks are packaged in one scenario, there is a slight delay in execution, and there are deadlines, and if certain conditions are not met within the deadline, the system joins the queues and executes them later.
- Device starts charging
- Free
- Connect to the Network
- Disconnect Network
3. Interface type
Boolean onstartjob (Jobparams params) {
//Start execution
//Note This method is performed on the main thread, and if it is time-consuming, throw it into the standalone thread
//jobfinished ( Jobparameters params)//After completing the task and deciding whether more tasks need to be performed regularly
//return is on independence now there are transactions to perform
}
void Onstopjob () {
/ Used to clean up the data and be recalled after the task is finished.
}
Iv. GCM
GCM Netwrok Manager actually uses the Job Scheduler in Api 21 or above, and the previous version uses the Google Play service in the real
The function of the current job scheduler.
There are a lot of rules in the Gcmnetworkmanager that are good for saving points.
1. Interface type
Create a task through Oneofftask.builder () and Periodictask.builder ().
Gcmtaskservice#onruntask (Taskparams params) is performed in a background thread.
The trigger scene is the same as in Jobinfo.
V. Sync Adapter
Transferring Data Using Sync adapters
It is usually used to synchronize more data.
Maybe this is a better alternative to job Scheduler API 21 ago.
Synchronizes the data on the server side with the local device.
1. Characteristics
- facilitate large data synchronization.
- No need to rely on Google Play Service.
- Power-saving stability.
- Users can proactively view the timing of synchronization through settings, trigger synchronization, or turn off synchronization.
- API 7 or more.
2. Notes
You can bind an account.
A database that provides contentprovider and synchronizes with the server.
Synchronization is triggered only when there is a network.
2. Trigger synchronization in a certain scenario
As much as possible, pack all the tasks that need to be synchronized in a single cycle to save as much battery power as possible.
Service-side/device-side data has changed.
When the phone is idle.
One day.
If the synchronization fails, it is placed in the queue where synchronization failed, synchronizing as much as possible.
VI. Doze Mode
Deep Doze Mode
In API 23, it is called doze Mode directly.
Regardless of the target SDK, this mode is enabled as long as the device is Android API 23 or above.
1. Characteristics
AIM: To reduce the consumption of mobile phone as much as possible after the user leaves the device.
Developers do not need to make special adaptations, but they affect all of the schedule methods mentioned above (Job Scheduler, Alarmmanager, syncs Adapter).
The task request is packaged by moving the window, and the time interval becomes longer.
2. Entry Conditions
will take effect for a period of time (approximately 30 minutes) after the following conditions are met:
The phone's not charging.
Screen is closed
Cell phones remain stable on all sides
The exit condition is that any conditional state in the entry condition changes.
3. Mobile status between two processing windows
- Deny network access to all applications.
- All Jobscheduler, Sync-adapter, Alarmmanager Tasks will be deferred to the window for execution.
- The system will reject all wake-lock from the application
- Stop all WiFi and GPS scans
- Reduce location events from devices to detect WiFi hotspots.
Light Doze Mode
API 24 or more will enable this mode
1. Characteristics
Compared to deep Doze Mode, the frequency of packing tasks is higher
2. Entry Conditions
A colleague will be in effect for a period of time (about a few minutes) after meeting the following:
The phone's not charging.
Screen is closed
In a stable state/unstable state
or in the following conditions:
In deep Doze Mode
Screen off
The phone's not charging.
Cell phone is no longer in stable condition
3. Exit conditions
Screen Open
Cell phone starts charging
Enter Deep Doze Mode
4. Mobile status between two processing windows
Deny network access to all applications.
All Jobscheduler and Sync-adapter tasks will be deferred to the window for execution.
The tasks in Alarmmanager are not affected, but there will be no network access (if your task requires network access, it is time to switch to Jobscheduler or sync-adapter to ensure that there is a network in the task window)
Interrupt/Avoid Doze
All of the following, Google officials suggest not to use special scenarios, because of the interruption of the rule of saving electricity.
1. Alarmmanager
Specifies the event that requires exact time: Setandallowwhileidle (), Setexactandallowwhileidle (). However, no network access restrictions are not lifted during non windows, and only 10s of time is available for processing.
The event that specifies the alarm event alarmmanager.setalarmclock () will cause the system to completely exit the Doze mode briefly before the end of the alarm clock, and handle the event normally, and the system will display the icon of the physical alarm clock on the status bar to highlight the alarm event.
2. FCM/GCM
(firebase Cloud messaging, called Google Cloud Messaging (GCM) in the old version.)
FCM/GCM in the High priority task configuration ("Priority": "HI") message, in the doze mode can be normal in time to arrive.
3. White List
White List Official documents
Official proposal to consider the inclusion of the white list
The active request joins the white list, the user joins the white list after the same;
Users can also take the initiative to remove or add apps from the whitelist;
Applications can be isignoringbatteryoptimizations () to see if they are in the whitelist;
Whitelist applications can access the network and hold valid Wakeloke, but other doze constraints still exist (such as deferred job Scheduler, Syncs-adapter, Alarmmanager);
White
How to request the list:
By action_ignore_battery_optimization_settings the Power Optimization page, users can use the search to turn off the application's power optimization to add the whitelist.
Hold the Request_ignore_battery_optimizations permission first, and then start the Intentaction_request_ignore_battery_ Optimizations Direct Eject dialog allows the user to turn off the application's power optimization to add a whitelist.
4. Special Circumstances
The front desk service (Foreground-service) will not be affected by the doze mode.
Doze mode test
Google officials have provided some ADB commands to test the doze pattern rather than waiting to enter the Doze mode.
1. Enter Doze mode
Prepare a system that is in the Android nougat devloper Preview4 or above version of the device.
Connect it to your computer.
The ADB shell dumpsys Battery Unplug command allows the device to enter a disconnected charging mode.
Forced into doze mode through adb shell Dumpsys deviceidle step [Light|deep].
Exit Doze mode, let the phone return to normal need to reset the charging mode: adb shell dumpsys battery reset.
2. Other Directives
Gets the device status adb Shell Dumpsys deviceidle get [light|deep|force|screen|charging|network].
In the Android nougat Developer Preview 4, the state cycle of the doze mode is:
Light:active-> IDLE-> idle_maintenance->
Deep:active-> idle_pending-> Sensing-> locating-> IDLE-> idle_maintenance
Choosing the right Background Scheduler in Android
Diving into Doze Mode for developers
©2012–2016, Jacksgong (blog.dreamtobe.cn). Licensed under the Creative Commons attribution-noncommercial 3.0 license (this license lets others, remix, and Tweak D upon a work non-commercially, and although their new works must also acknowledge the original author and is Non-commerci Al, they don ' t have to license their derivative works on the same terms). http://creativecommons.org/licenses/by-nc/3.0/
The above is on the Android back-Office scheduling tasks and power-saving data, there is the development of Android applications friends can refer to, thank you for the support of this site!