Add BackgroundManager release.
Change-Id: I5a4af31a214f2db26a399db39cf73d578dcbc71c
This commit is contained in:
@@ -100,6 +100,7 @@ public class BackgroundHelper {
|
||||
private Bitmap loadBitmap(Activity activity, Object imageToken) {
|
||||
if (imageToken instanceof Integer) {
|
||||
final int resourceId = (Integer) imageToken;
|
||||
if (DEBUG) Log.v(TAG, "load resourceId " + resourceId);
|
||||
Drawable drawable = ContextCompat.getDrawable(activity, resourceId);
|
||||
if (drawable instanceof BitmapDrawable) {
|
||||
return ((BitmapDrawable) drawable).getBitmap();
|
||||
@@ -110,7 +111,7 @@ public class BackgroundHelper {
|
||||
|
||||
private void applyBackground(Activity activity, Bitmap bitmap) {
|
||||
BackgroundManager backgroundManager = BackgroundManager.getInstance(activity);
|
||||
if (bitmap == null || backgroundManager == null || !backgroundManager.isAttached()) {
|
||||
if (backgroundManager == null || !backgroundManager.isAttached()) {
|
||||
return;
|
||||
}
|
||||
backgroundManager.setBitmap(bitmap);
|
||||
@@ -120,22 +121,34 @@ public class BackgroundHelper {
|
||||
private LoadBackgroundRunnable mRunnable;
|
||||
private LoadBitmapTask mTask;
|
||||
|
||||
public void attach(Activity activity) {
|
||||
if (!ENABLED) {
|
||||
return;
|
||||
}
|
||||
BackgroundManager.getInstance(activity).attach(activity.getWindow());
|
||||
}
|
||||
// Allocate a dedicated handler because there may be no view available
|
||||
// when setBackground is invoked.
|
||||
private Handler mHandler = new Handler();
|
||||
|
||||
public void setBackground(Activity activity, Object imageToken) {
|
||||
if (!ENABLED) {
|
||||
return;
|
||||
}
|
||||
Handler handler = activity.getWindow().getDecorView().getHandler();
|
||||
if (mRunnable != null) {
|
||||
handler.removeCallbacks(mRunnable);
|
||||
mHandler.removeCallbacks(mRunnable);
|
||||
}
|
||||
mRunnable = new LoadBackgroundRunnable(activity, imageToken);
|
||||
handler.postDelayed(mRunnable, SET_BACKGROUND_DELAY_MS);
|
||||
mHandler.postDelayed(mRunnable, SET_BACKGROUND_DELAY_MS);
|
||||
}
|
||||
|
||||
static public void attach(Activity activity) {
|
||||
if (!ENABLED) {
|
||||
return;
|
||||
}
|
||||
if (DEBUG) Log.v(TAG, "attach to activity " + activity);
|
||||
BackgroundManager.getInstance(activity).attach(activity.getWindow());
|
||||
}
|
||||
|
||||
static public void release(Activity activity) {
|
||||
if (!ENABLED) {
|
||||
return;
|
||||
}
|
||||
if (DEBUG) Log.v(TAG, "release from activity " + activity);
|
||||
BackgroundManager.getInstance(activity).release();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,4 +23,16 @@ public class BrowseActivity extends Activity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.browse);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
BackgroundHelper.attach(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
BackgroundHelper.release(this);
|
||||
super.onStop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,10 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
||||
RowPresenter.ViewHolder rowViewHolder, Row row) {
|
||||
Log.i(TAG, "onItemSelected: " + item + " row " + row);
|
||||
|
||||
if (item instanceof PhotoItem) {
|
||||
if (isShowingHeaders()) {
|
||||
mBackgroundHelper.setBackground(getActivity(), null);
|
||||
}
|
||||
else if (item instanceof PhotoItem) {
|
||||
mBackgroundHelper.setBackground(
|
||||
getActivity(), ((PhotoItem) item).getImageResourceId());
|
||||
}
|
||||
@@ -85,8 +88,6 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
||||
}
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
mBackgroundHelper.attach(getActivity());
|
||||
}
|
||||
|
||||
private void setupRows() {
|
||||
@@ -112,7 +113,7 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
||||
listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_5));
|
||||
listRowAdapter.add(new PhotoItem("This is a test", "Only a test", R.drawable.gallery_photo_6));
|
||||
listRowAdapter.add(new PhotoItem("Android TV", "open RowsActivity", R.drawable.gallery_photo_7));
|
||||
listRowAdapter.add(new PhotoItem("Leanback", "open MainActivity", R.drawable.gallery_photo_8));
|
||||
listRowAdapter.add(new PhotoItem("Leanback", "open BrowseActivity", R.drawable.gallery_photo_8));
|
||||
HeaderItem header = new HeaderItem(i, "Row " + i);
|
||||
mRowsAdapter.add(new ListRow(header, listRowAdapter));
|
||||
}
|
||||
@@ -128,7 +129,7 @@ public class BrowseFragment extends android.support.v17.leanback.app.BrowseFragm
|
||||
Intent intent;
|
||||
Bundle bundle;
|
||||
if ( ((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_8) {
|
||||
intent = new Intent(getActivity(), MainActivity.class);
|
||||
intent = new Intent(getActivity(), BrowseActivity.class);
|
||||
bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity())
|
||||
.toBundle();
|
||||
} else if ( ((PhotoItem) item).getImageResourceId() == R.drawable.gallery_photo_7) {
|
||||
|
||||
@@ -35,4 +35,15 @@ public class DetailsActivity extends Activity
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
BackgroundHelper.attach(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
BackgroundHelper.release(this);
|
||||
super.onStop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,8 +159,6 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra
|
||||
prepareEntranceTransition();
|
||||
}
|
||||
}
|
||||
|
||||
mBackgroundHelper.attach(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -206,4 +204,13 @@ public class DetailsFragment extends android.support.v17.leanback.app.DetailsFra
|
||||
setAdapter(mRowsAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
if (mPhotoItem != null) {
|
||||
mBackgroundHelper.setBackground(
|
||||
getActivity(), mPhotoItem.getImageResourceId());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -88,5 +88,4 @@ public class MainActivity extends Activity {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user