Given a package name, the Backup Manager schedules a *full* (i.e. non-
incremental) backup pass for that package. Also added the state-file
handling for distinguishing to the target between the full and incremental
backup requests.
We are decreasing CPU usage at the cost of event latency. Events are queued up
and released to the app at the specified rate. You can
experiment with different values via:
adb shell setprop windowsmgr.max_events_per_sec 35
The new value is picked up when you let go and retouch the screen. No
reboot needed.
Also the following changes were made after profiling:
- In WindowManagerService, limit the call to userActivity() when we
have a flood touch events.
- In PowerManagerService, skip checking of permission if the caller
is system user.
- In PowerManagerService, integrated the functionality of gatherState()
into reactivateWakeLocksLocked(). They loop through the same data
structure and are called back to back.
BUG=1692771
Automated import of CL 148368
If the battery files can't be found return status_unkown instead of an
error. On systems where we haven't brought up battery stats yet they
assume the battery is dead and turn off as soon as the runtime starts
Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
The previous implementation used a database for storing all of its state, which could cause
a significant amount of IO activity as its tables were updated through the stages of a sync.
This new implementation replaces that in-memory data structures, with hand-written code
for writing them to persistent storage.
There are now 4 files associated with this class, holding various pieces of its state that
should be consistent. These are everything from a main XML file of account information that
must always be retained, to a binary file of per-day statistics that can be thrown away at
any time. Writes of these files as scheduled at various times based on their importance of
the frequency at which they change.
Because the database no longer exists, there needs to be a new explicit interface for
interacting with the sync manager database. This is provided by new APIs on IContentService,
with a hidden method on ContentResolver to retrieve the IContentService so that various
system entities can use it. Other changes in other projects are required to update to the
new API.
The goal here is to have as little an impact on the code and functionality outside of
SyncStorageEngine, though due to the necessary change in API it is still somewhat extensive.
Author: Christopher Tate <ctate@google.com>
Date: Mon May 4 16:38:11 2009 -0700
IBackupService now passes ParcelFileDescriptors rather than int fds
The outlines of backup state file / data file handling are now in place as well
in the BackupManagerService.
Author: Christopher Tate <ctate@google.com>
Date: Thu Apr 30 12:40:19 2009 -0700
Hide the backup stuff for now
Also adjust based on comments:
+ changed service intent string to conform to usage guidelines
+ only publish the IBackupService binder when invoked with the right
intent action
+ docs tweaks
Also added new permissions android.permission.INSTALL_LOCATION_PROVIDER
and android.permission.INSTALL_LOCATION_COLLECTOR to the public API.
Signed-off-by: Mike Lockwood <lockwood@android.com>
This change eliminates the LocationProviderImpl class which had been used
for location providers running in the system process.
Now the LocationProvider base class is only used to implement the
LocationManager.createProvider() method for retrieving provider information.
Added a new IGpsStatusProvider interface for providers that serve GPS status.
Signed-off-by: Mike Lockwood <lockwood@android.com>
Also tweak the dataChanged() api to have the client supply a package name. We
don't necessarily TRUST this, but we use it to narrow the set of packages requesting
a backup pass, no longer blithely scheduling a pass for all packages associated
with the caller's uid.
This change adds a sketched outline of the backup system architecture, with
all of the major pieces represented other than client-side helpers for
specific types of data. IBackupManager and BackupService are public so that
we can write test apps against SDK-domain symbols from the outset.
What code exists in this change hasn't been tested and may crash. It's the
beginnings of the real implementation but of course is barely begun.
Now that we have GPS support in the emulator and public APIs for mock providers,
the fake provider support is no longer needed.
Signed-off-by: Mike Lockwood <lockwood@android.com>
Remove two second timeout for wakelock when broadcasting events to
location listeners. Instead, hold wakelock until receipt of the event
is acknowledged, either via a Binder call or the
PendingIntent.OnFinished interface.
Signed-off-by: Mike Lockwood <lockwood@android.com>
There are three major classes of changes here:
- Avoid writing lines where their values are often empty, false, or some other typical thing.
- Use partial writes to the PrintWriter to avoid creating temporary strings.
- Use StringBuilder where we need to generate real String objects (and where possible cache the result).
The wake lock was not being held until after we enabled location tracking,
so the check to see if the wake lock was held before propogating a
new location prevented us from receiving a network location as soon as we
enabled the provider.
This check is not necessary anyway, so this change removes it.
Signed-off-by: Mike Lockwood <lockwood@android.com>
This replaces two different mechanisms that were used for GPS and Netork
location provider tracking.
Move BatteryStats logging of GPS usage from LocationManagerService to
GpsLocationProvider.
Clean up tracking of location listeners in LocationManagerService and remove
some HashMaps that are no longer needed.
Signed-off-by: Mike Lockwood <lockwood@android.com>
My original implementation was computing averages and medians. Now we do binning, as requested. So much simpler, too! In addition, it fixes a bug where when hoping across activities we were only accounting for the last activity as the total time; now we count the time from the start of the initial activity.
This also includes some reduction and optimization of the activity manager dumpsys output.
Two new broadcasts, Intent.ACTION_POWER_CONNECTED and
Intent.ACTION_POWER_CONNECTED, that are issued when the device is plugged
and unplugged from USB or AC power. This pulls two changes from the
open-source Gerrit repo into the internal Donut codeline:
1241 fda6fae Added broadcasts for external power events.
9491 37f8ca1 Fix system service crash when booting while on battery power
The current.xml API description has also been updated to include the
new Intent fields; the new API was approved in the original OSS change.
The usage stats service now collects per-activity launch time stats. There are a number of fixes and improvements to its statistics management and collection; it now operates its calendar in GMT and ensures that for checkin purposes it always reports one day and only one complete day to the checkin service.
Also change the checkin option from "-c" to "--checkin" since it is really a special thing.
This fixes a hack that was added when NetworkLocationManager was moved out of the framework.
This also lays the groundwork for supporting location providers outside of the system process.
BUG=1729031
Automated import of CL 144663
Move broadcast receivers for wifi scan results and battery status
from LocationManagerService to NetworkLocationProvider
Add a Service for the NetworkLocationProvider, so we can install it from its
own thread rather than from BOOT_COMPLETED or callback from LocationManagerService.
(this Service was also required for receiving Intents in NetworkLocationProvider)
BUG=1729031
Automated import of CL 144620
Move PhoneStateListener for listening to cell location changes from LocationManagerService
to the NetworkLocationProvider.
Move CellState class out of the core framework to the NetworkLocationProvider service.
NetworkLocationManager now notifies the collector of its state, rather than LocationManagerService.
BUG=1729031
Automated import of CL 144599
Remove 1 Hz "heartbeat" polling of location providers from LocationManagerService.
Now location providers report their location to LocationManagerService via
LocationManager.setLocation() rather than waiting to be polled.
This reduces GPS fix latency by up to one second.
Remove LocationProvderImpl.getLocation().
Since we are no longer polling, this method is no longer necessary.
BUG=1729031
Automated import of CL 144452
LocationManagerService now listens for changes to settings,
making LocationManager.updateProviders() unnecessary.
Removed LocationManager.updateProviders()
Added Settings.Secure.setLocationProviderEnabled(), which is a thread-safe way
of enabling or disabling a single location provider.
This is safer than reading, modifying and writing the LOCATION_PROVIDERS_ALLOWED directly.
BUG=1729031
Automated import of CL 144372
2 levels as recorded at plug and unplug events. During charge cycles this would be useful because it would tell us
what the start and end levels were in the last discharge cycle. However during a discharge cycle this information could
be misleading as it would give you the level at the last unplug event (beginning the the discharge cycle) and last plug
event (end of the previous discharge cycle).
Now we are still keeping track of 2 values, but they are "discharge cycle start level" and "discharge cycle current level".
During a discharge cycle this will give you the level the current discharge cycle started at, and the current level. During
a charge cycle the same data will be supplied as before (the start/end of the last discharge cycle).
B=144249
Automated import of CL 144333