Fix bug in IntentService and Service example code.

Use Thread.sleep instead of Object.wait which simplifies the example.
Also there is a tiny chance, that wait will be called with 0, which
blocks forever.

Change-Id: I4cf90a33089a64bdf802620350f76af08f15f721
(cherry picked from commit 77d8857ed5)
This commit is contained in:
Florian Salbrechter
2016-02-08 13:36:43 +00:00
parent bc56ca34aa
commit 067902ce7b

View File

@@ -336,14 +336,11 @@ public class HelloIntentService extends IntentService {
protected void onHandleIntent(Intent intent) {
// Normally we would do some work here, like download a file.
// For our sample, we just sleep for 5 seconds.
long endTime = System.currentTimeMillis() + 5*1000;
while (System.currentTimeMillis() < endTime) {
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// Restore interrupt status.
Thread.currentThread().interrupt();
}
}
}
@@ -405,14 +402,11 @@ public class HelloService extends Service {
public void handleMessage(Message msg) {
// Normally we would do some work here, like download a file.
// For our sample, we just sleep for 5 seconds.
long endTime = System.currentTimeMillis() + 5*1000;
while (System.currentTimeMillis() < endTime) {
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (Exception e) {
}
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// Restore interrupt status.
Thread.currentThread().interrupt();
}
// Stop the service using the startId, so that we don't stop
// the service in the middle of handling another job