diff options
| author | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-11 19:24:44 -0400 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-11 19:24:44 -0400 |
| commit | d3e061fc8f4a2a1e6b98ee43fd706ac09c786b61 (patch) | |
| tree | 5ac72ec25ef634fc0e0afa8a86e0e6394c29432f /core/java | |
| parent | b942db35c52acc6842438b0de8f60d4de1e34e21 (diff) | |
| parent | b6437245c280596d0a580b8d67189739cf793250 (diff) | |
Merge change 24609 into eclair
* changes:
If disk-full, don't crash the system server. Still todo: when we have disk we should trigger the event again.
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/accounts/AccountManager.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index d04abe59c680..9afeb74b02f4 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -21,11 +21,13 @@ import android.content.Intent; import android.content.Context; import android.content.IntentFilter; import android.content.BroadcastReceiver; +import android.database.SQLException; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.RemoteException; import android.os.Parcelable; +import android.util.Log; import java.io.IOException; import java.util.concurrent.Callable; @@ -364,7 +366,13 @@ public class AccountManager { handler = (handler == null) ? mMainHandler : handler; handler.post(new Runnable() { public void run() { - listener.onAccountsUpdated(accountsCopy); + try { + listener.onAccountsUpdated(accountsCopy); + } catch (SQLException e) { + // Better luck next time. If the problem was disk-full, + // the STORAGE_OK intent will re-trigger the update. + Log.e(TAG, "Can't update accounts", e); + } } }); } @@ -824,6 +832,8 @@ public class AccountManager { // Register a broadcast receiver to monitor account changes IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Constants.LOGIN_ACCOUNTS_CHANGED_ACTION); + // To recover from disk-full. + intentFilter.addAction(Intent.ACTION_DEVICE_STORAGE_OK); mContext.registerReceiver(mAccountsChangedBroadcastReceiver, intentFilter); } } |
