Moved clear history to AsyncTask
Bug: 2739696
Clear history could cause an ANR. Moved it to an async task
Change-Id: I27cb4e0235f4c15d46fe06a0f705389952fd3e92
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index f99e7b5..2a095ad 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -34,6 +34,7 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Browser;
import android.provider.BrowserContract;
@@ -223,6 +224,7 @@
switch (item.getItemId()) {
case R.id.clear_history_menu_id:
final ContentResolver resolver = getActivity().getContentResolver();
+ final ClearHistoryTask clear = new ClearHistoryTask(resolver, mCallbacks);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle(R.string.clear)
.setMessage(R.string.pref_privacy_clear_history_dlg)
@@ -232,8 +234,7 @@
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
- Browser.clearHistory(resolver);
- mCallbacks.onRemoveParentChildRelationships();
+ clear.execute();
}
}
});
@@ -247,6 +248,27 @@
return super.onOptionsItemSelected(item);
}
+ static class ClearHistoryTask extends AsyncTask<Void, Void, Void> {
+ ContentResolver mResolver;
+ BookmarksHistoryCallbacks mCallbacks;
+
+ public ClearHistoryTask(ContentResolver resolver,
+ BookmarksHistoryCallbacks callbacks) {
+ mResolver = resolver;
+ mCallbacks = callbacks;
+ }
+ @Override
+ protected Void doInBackground(Void... params) {
+ Browser.clearHistory(mResolver);
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ mCallbacks.onRemoveParentChildRelationships();
+ }
+ }
+
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
ExpandableListContextMenuInfo i = (ExpandableListContextMenuInfo) menuInfo;