Merge "All kinds of little foreground services fixes." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-05 09:00:42 +00:00
committed by Android (Google) Code Review
4 changed files with 28 additions and 19 deletions

View File

@@ -671,21 +671,21 @@ public abstract class Service extends ContextWrapper implements ComponentCallbac
} }
/** /**
* Make this service run in the foreground, supplying the ongoing * If your service is started (running through {@link Context#startService(Intent)}), then
* also make this service run in the foreground, supplying the ongoing
* notification to be shown to the user while in this state. * notification to be shown to the user while in this state.
* By default services are background, meaning that if the system needs to * By default started services are background, meaning that their process won't be given
* kill them to reclaim more memory (such as to display a large page in a * foreground CPU scheduling (unless something else in that process is foreground) and,
* web browser), they can be killed without too much harm. You can set this * if the system needs to kill them to reclaim more memory (such as to display a large page in a
* flag if killing your service would be disruptive to the user, such as * web browser), they can be killed without too much harm. You use
* {@link #startForeground} if killing your service would be disruptive to the user, such as
* if your service is performing background music playback, so the user * if your service is performing background music playback, so the user
* would notice if their music stopped playing. * would notice if their music stopped playing.
* *
* <p>If you need your application to run on platform versions prior to API * <p>Note that calling this method does <em>not</em> put the service in the started state
* level 5, you can use the following model to call the the older setForeground() * itself, even though the name sounds like it. You must always call
* or this modern method as appropriate: * {@link #startService(Intent)} first to tell the system it should keep the service running,
* * and then use this method to tell it to keep it running harder.</p>
* {@sample development/samples/ApiDemos/src/com/example/android/apis/app/ForegroundService.java
* foreground_compatibility}
* *
* @param id The identifier for this notification as per * @param id The identifier for this notification as per
* {@link NotificationManager#notify(int, Notification) * {@link NotificationManager#notify(int, Notification)
@@ -716,7 +716,9 @@ public abstract class Service extends ContextWrapper implements ComponentCallbac
/** /**
* Remove this service from foreground state, allowing it to be killed if * Remove this service from foreground state, allowing it to be killed if
* more memory is needed. * more memory is needed. This does not stop the service from running (for that
* you use {@link #stopSelf()} or related methods), just takes it out of the
* foreground state.
* *
* @param flags additional behavior options. * @param flags additional behavior options.
* @see #startForeground(int, Notification) * @see #startForeground(int, Notification)

View File

@@ -644,8 +644,10 @@
<!-- Text shown when viewing channel settings for notifications related to a usb connection --> <!-- Text shown when viewing channel settings for notifications related to a usb connection -->
<string name="notification_channel_usb">USB connection</string> <string name="notification_channel_usb">USB connection</string>
<!-- Text shown when viewing channel settings for notifications related to running foreground <!-- This is the label for the notification channel settings that controls the behavior
services [CHAR LIMIT=NONE] --> of the notification about applications that are running in the background (that is,
perhaps confusingly, running foreground services but not the foreground UI on the screen).
[CHAR LIMIT=NONE] -->
<string name="notification_channel_foreground_service">Apps running in background</string> <string name="notification_channel_foreground_service">Apps running in background</string>
<!-- Label for foreground service notification when one app is running. [CHAR LIMIT=NONE] --> <!-- Label for foreground service notification when one app is running. [CHAR LIMIT=NONE] -->
@@ -663,7 +665,10 @@
data usage</string> data usage</string>
<!-- Separator for foreground service notification content listing all apps when there <!-- Separator for foreground service notification content listing all apps when there
are multiple apps running [CHAR LIMIT=NONE] --> are multiple apps running. The left and right side may both already be compound
(constructed using this separator). Should be kept as short as possible, this is
for summary text in the notification where there is not a lot of space.
[CHAR LIMIT=NONE] -->
<string name="foreground_service_multiple_separator"><xliff:g id="left_side">%1$s</xliff:g>, <string name="foreground_service_multiple_separator"><xliff:g id="left_side">%1$s</xliff:g>,
<xliff:g id="right_side">%2$s</xliff:g></string> <xliff:g id="right_side">%2$s</xliff:g></string>

View File

@@ -2033,7 +2033,9 @@
<!-- Title of the "running foreground services" dialog. [CHAR LIMIT=NONE] --> <!-- Title of the "running foreground services" dialog. [CHAR LIMIT=NONE] -->
<string name="running_foreground_services_title">Apps running in background</string> <string name="running_foreground_services_title">Apps running in background</string>
<!-- Title of the "running foreground services" dialog. [CHAR LIMIT=NONE] --> <!-- Descriptive text of an item in the "running foreground services" dialog, telling the
user what will happen when they tap on that item (which is an application that has
been identified for them as running). [CHAR LIMIT=NONE] -->
<string name="running_foreground_services_msg">Tap for details on battery and data usage</string> <string name="running_foreground_services_msg">Tap for details on battery and data usage</string>
</resources> </resources>

View File

@@ -66,7 +66,7 @@ public final class ForegroundServicesDialog extends AlertActivity implements
private DialogInterface.OnClickListener mAppClickListener = private DialogInterface.OnClickListener mAppClickListener =
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
String pkg = mPackages[which]; String pkg = mAdapter.getItem(which).packageName;
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.fromParts("package", pkg, null)); intent.setData(Uri.fromParts("package", pkg, null));
startActivity(intent); startActivity(intent);