diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
index 7e98c6f0f08bafcb86aeb8782e9b8861ff9cd147..60b3390bd93edfc21583b7c14706b3e2186c4da0 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
@@ -25,6 +25,7 @@ import android.app.Activity;
 import android.app.PendingIntent;
 import android.app.PictureInPictureParams;
 import android.app.RemoteAction;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -120,6 +121,8 @@ public class CallFragment extends BaseSupportFragment<CallPresenter> implements
     private int mPreviewWidth = 720, mPreviewHeight = 1280;
     private int mPreviewSurfaceWidth = 0, mPreviewSurfaceHeight = 0;
 
+    private boolean mBackstackLost = false;
+
     @Inject
     DeviceRuntimeService mDeviceRuntimeService;
 
@@ -247,8 +250,7 @@ public class CallFragment extends BaseSupportFragment<CallPresenter> implements
             displayVideoSurface(true, !presenter.isPipMode());
             restartVideo = false;
             restartPreview = false;
-        }
-        else if (restartVideo) {
+        } else if (restartVideo) {
             displayVideoSurface(true, false);
             restartVideo = false;
         }
@@ -444,10 +446,12 @@ public class CallFragment extends BaseSupportFragment<CallPresenter> implements
         AppCompatActivity activity = (AppCompatActivity) getActivity();
         ActionBar actionBar = activity == null ? null : activity.getSupportActionBar();
         if (actionBar != null) {
-            if (isInPictureInPictureMode)
+            if (isInPictureInPictureMode) {
                 actionBar.hide();
-            else
+            } else {
+                mBackstackLost = true;
                 actionBar.show();
+            }
         }
         presenter.pipModeChanged(isInPictureInPictureMode);
     }
@@ -708,7 +712,7 @@ public class CallFragment extends BaseSupportFragment<CallPresenter> implements
         if (!audioOnly) {
             boolean videoGranted = mDeviceRuntimeService.hasVideoPermission();
 
-            if ((!audioGranted || !videoGranted) &&  android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+            if ((!audioGranted || !videoGranted) && android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                 ArrayList<String> perms = new ArrayList<>();
                 if (!videoGranted) {
                     perms.add(Manifest.permission.CAMERA);
@@ -753,10 +757,19 @@ public class CallFragment extends BaseSupportFragment<CallPresenter> implements
     @Override
     public void finish() {
         Activity activity = getActivity();
-        if (activity != null)
-            activity.finish();
+        if (activity != null) {
+            if (mBackstackLost) {
+                activity.finishAndRemoveTask();
+                startActivity(
+                        Intent.makeMainActivity(
+                                new ComponentName(activity, HomeActivity.class)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+            } else {
+                activity.finish();
+            }
+        }
     }
 
+
     public void speakerClicked() {
         presenter.speakerClick(binding.callSpeakerBtn.isChecked());
     }
diff --git a/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java b/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
index da27b6b5640a2fe0982549d8edfd3bf5a02e1763..53cb91c5294a52789174bde72b5791ba454dc650 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/call/TVCallFragment.java
@@ -22,7 +22,9 @@ package cx.ring.tv.call;
 
 import android.Manifest;
 import android.app.Activity;
+import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
 import android.graphics.Matrix;
@@ -67,6 +69,7 @@ import cx.ring.model.CallContact;
 import cx.ring.model.SipCall;
 import cx.ring.mvp.BaseFragment;
 import cx.ring.services.DeviceRuntimeService;
+import cx.ring.tv.main.HomeActivity;
 import cx.ring.views.AvatarDrawable;
 import io.reactivex.disposables.CompositeDisposable;
 
@@ -95,6 +98,8 @@ public class TVCallFragment extends BaseFragment<CallPresenter> implements CallV
     private int mPreviewWidth = 720, mPreviewHeight = 1280;
     private int mPreviewWidthRot = 720, mPreviewHeightRot = 1280;
 
+    private boolean mBackstackLost = false;
+
     @Inject
     DeviceRuntimeService mDeviceRuntimeService;
 
@@ -253,6 +258,9 @@ public class TVCallFragment extends BaseFragment<CallPresenter> implements CallV
 
     @Override
     public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) {
+        if(!isInPictureInPictureMode) {
+            mBackstackLost = true;
+        }
         presenter.pipModeChanged(isInPictureInPictureMode);
     }
 
@@ -537,7 +545,17 @@ public class TVCallFragment extends BaseFragment<CallPresenter> implements CallV
 
     @Override
     public void finish() {
-        getActivity().finish();
+        Activity activity = getActivity();
+        if (activity != null) {
+            if (mBackstackLost) {
+                activity.finishAndRemoveTask();
+                startActivity(
+                        Intent.makeMainActivity(
+                                new ComponentName(activity, HomeActivity.class)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+            } else {
+                activity.finish();
+            }
+        }
     }
 
     @Override