Skip to content

Commit ef65310

Browse files
Winson ChungAndroid (Google) Code Review
authored andcommitted
Merge "Moving persistence calls to background." into jb-mr1-lockscreen-dev
2 parents b1e7695 + f8f5966 commit ef65310

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import android.appwidget.AppWidgetHostView;
2525
import android.content.Context;
2626
import android.content.res.Resources;
27+
import android.os.Handler;
28+
import android.os.HandlerThread;
2729
import android.util.AttributeSet;
2830
import android.view.Gravity;
2931
import android.view.MotionEvent;
@@ -33,7 +35,6 @@
3335
import android.widget.FrameLayout;
3436

3537
import com.android.internal.R;
36-
3738
import com.android.internal.widget.LockPatternUtils;
3839

3940
import java.util.ArrayList;
@@ -67,6 +68,10 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit
6768

6869
private boolean mCameraWidgetEnabled;
6970

71+
// Background threads to deal with persistence
72+
private HandlerThread mBgPersistenceWorkerThread;
73+
private Handler mBgPersistenceWorkerHandler;
74+
7075
public KeyguardWidgetPager(Context context, AttributeSet attrs) {
7176
this(context, attrs, 0);
7277
}
@@ -85,6 +90,9 @@ public KeyguardWidgetPager(Context context, AttributeSet attrs, int defStyle) {
8590

8691
Resources r = getResources();
8792
mCameraWidgetEnabled = r.getBoolean(R.bool.kg_enable_camera_default_widget);
93+
mBgPersistenceWorkerThread = new HandlerThread("KeyguardWidgetPager Persistence");
94+
mBgPersistenceWorkerThread.start();
95+
mBgPersistenceWorkerHandler = new Handler(mBgPersistenceWorkerThread.getLooper());
8896
}
8997

9098
public void setViewStateManager(KeyguardViewStateManager viewStateManager) {
@@ -179,17 +187,28 @@ public void addWidget(View widget) {
179187

180188

181189
public void onRemoveView(View v) {
182-
int appWidgetId = ((KeyguardWidgetFrame) v).getContentAppWidgetId();
183-
mLockPatternUtils.removeAppWidget(appWidgetId);
190+
final int appWidgetId = ((KeyguardWidgetFrame) v).getContentAppWidgetId();
191+
mBgPersistenceWorkerHandler.post(new Runnable() {
192+
@Override
193+
public void run() {
194+
mLockPatternUtils.removeAppWidget(appWidgetId);
195+
}
196+
});
184197
}
185198

186-
public void onAddView(View v, int index) {
187-
int appWidgetId = ((KeyguardWidgetFrame) v).getContentAppWidgetId();
188-
getVisiblePages(mTempVisiblePagesRange);
189-
boundByReorderablePages(true, mTempVisiblePagesRange);
199+
public void onAddView(View v, final int index) {
200+
final int appWidgetId = ((KeyguardWidgetFrame) v).getContentAppWidgetId();
201+
final int[] pagesRange = new int[mTempVisiblePagesRange.length];
202+
getVisiblePages(pagesRange);
203+
boundByReorderablePages(true, pagesRange);
190204
// Subtract from the index to take into account pages before the reorderable
191205
// pages (e.g. the "add widget" page)
192-
mLockPatternUtils.addAppWidget(appWidgetId, index - mTempVisiblePagesRange[0]);
206+
mBgPersistenceWorkerHandler.post(new Runnable() {
207+
@Override
208+
public void run() {
209+
mLockPatternUtils.addAppWidget(appWidgetId, index - pagesRange[0]);
210+
}
211+
});
193212
}
194213

195214
/*

0 commit comments

Comments
 (0)