This commit is contained in:
Yuriy Liskov
2020-09-24 04:29:44 +03:00
parent 755b152203
commit d4a1c472ee
3 changed files with 30 additions and 22 deletions
@@ -21,6 +21,7 @@ public class ViewManager {
private final Stack<Class<?>> mActivityStack;
private Class<?> mRootActivity;
private Class<?> mDefaultTop;
private long mPrevThrottleTimeMS;
private ViewManager(Context context) {
mContext = context;
@@ -54,6 +55,10 @@ public class ViewManager {
}
public void startView(Class<?> viewClass) {
if (doThrottle()) {
return;
}
Class<?> activityClass = mViewMapping.get(viewClass);
if (activityClass != null) {
@@ -62,6 +67,7 @@ public class ViewManager {
// Fix: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Log.d(TAG, "Launching activity view: " + activityClass.getSimpleName());
mContext.startActivity(intent);
} else {
Log.e(TAG, "Activity not registered for view " + viewClass.getSimpleName());
@@ -69,6 +75,10 @@ public class ViewManager {
}
public void startParentView(Activity activity) {
if (doThrottle()) {
return;
}
if (activity.getIntent() != null) {
removeTopActivity();
@@ -97,6 +107,10 @@ public class ViewManager {
}
public void startDefaultView(Context context) {
if (doThrottle()) {
return;
}
Class<?> lastActivity;
if (mDefaultTop != null) {
@@ -107,13 +121,22 @@ public class ViewManager {
lastActivity = mRootActivity;
}
Log.d(TAG, "Starting activity: " + lastActivity.getSimpleName());
Log.d(TAG, "Launching default activity: " + lastActivity.getSimpleName());
Intent intent = new Intent(context, lastActivity);
context.startActivity(intent);
}
private boolean doThrottle() {
long currentTimeMS = System.currentTimeMillis();
boolean skipEvent = currentTimeMS - mPrevThrottleTimeMS < 1_000;
mPrevThrottleTimeMS = currentTimeMS;
return skipEvent;
}
public void addTopActivity(@Nullable Class<?> activity) {
if (!mActivityStack.isEmpty() && mActivityStack.peek() == activity) {
return;
+1 -1
View File
@@ -23,7 +23,7 @@
<string name="auto_frame_rate_correction">Исправлять fps: %s</string>
<string name="category_background_playback">Фоновое воспроизведение</string>
<string name="not_implemented">Пока не готово</string>
<string name="option_background_playback_off">Отключен</string>
<string name="option_background_playback_off">Отключено</string>
<string name="option_background_playback_all">Видео и аудио</string>
<string name="option_background_playback_only_audio">Только аудио</string>
</resources>
@@ -30,7 +30,6 @@ public class PlaybackActivity extends LeanbackActivity {
private static final float GAMEPAD_TRIGGER_INTENSITY_OFF = 0.45f;
private boolean gamepadTriggerPressed = false;
private PlaybackFragment mPlaybackFragment;
private boolean mBackPressed;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -105,30 +104,12 @@ public class PlaybackActivity extends LeanbackActivity {
mPlaybackFragment.restartPlayer();
}
@Override
public void onBackPressed() {
super.onBackPressed();
mBackPressed = true;
}
@Override
protected void onStart() {
super.onStart();
mBackPressed = false;
}
@Override
protected void onStop() {
super.onStop();
if (mPlaybackFragment.isEngineBlocked() && mPlaybackFragment.isPIPEnabled()) {
if (!isFinishing() && mPlaybackFragment.isEngineBlocked() && mPlaybackFragment.isPIPEnabled()) {
enterPIPMode();
if (mBackPressed) {
ViewManager.instance(this).startParentView(this);
}
}
}
@@ -141,6 +122,10 @@ public class PlaybackActivity extends LeanbackActivity {
@Override
public void finish() {
if (mPlaybackFragment.isEngineBlocked() && mPlaybackFragment.isPIPEnabled()) {
enterPIPMode();
}
ViewManager.instance(this).startParentView(this);
//Intent intent = new Intent(this, BrowseActivity.class);