#320 finish BrowseFilesActivity when the phone gets locked

After unlocking the phone screen, the vault content isn't visible for a second before the app switches to the vault list any longer
This commit is contained in:
Julian Raufelder 2021-06-04 14:58:52 +02:00
parent a52502f510
commit c4496ca148
No known key found for this signature in database
GPG Key ID: 17EE71F6634E381D
3 changed files with 34 additions and 1 deletions

View File

@ -130,7 +130,6 @@ abstract class Presenter<V : View> protected constructor(private val exceptionMa
open fun resumed() {} open fun resumed() {}
fun destroy() { fun destroy() {
logLifecycle("destroy") logLifecycle("destroy")
unsubscribeAll() unsubscribeAll()

View File

@ -8,6 +8,7 @@ import android.content.IntentFilter;
import android.os.IBinder; import android.os.IBinder;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import org.cryptomator.data.cloud.crypto.Cryptors; import org.cryptomator.data.cloud.crypto.Cryptors;
import org.cryptomator.presentation.util.FileUtil; import org.cryptomator.presentation.util.FileUtil;
@ -23,6 +24,7 @@ import timber.log.Timber;
public class CryptorsService extends Service { public class CryptorsService extends Service {
public static final String SCREEN_AND_VAULT_LOCKED = "CRYPTOMATOR_SCREEN_AND_VAULT_LOCKED";
private static final String ACTION_LOCK_ALL = "CRYPTOMATOR_LOCK_ALL"; private static final String ACTION_LOCK_ALL = "CRYPTOMATOR_LOCK_ALL";
private final Cryptors.Default cryptors = new Cryptors.Default(); private final Cryptors.Default cryptors = new Cryptors.Default();
private final AutolockTimeout autolockTimeout = new AutolockTimeout(); private final AutolockTimeout autolockTimeout = new AutolockTimeout();
@ -211,6 +213,9 @@ public class CryptorsService extends Service {
destroyCryptorsAndHideNotification(); destroyCryptorsAndHideNotification();
stopCryptorsService(); stopCryptorsService();
// notify BrowseFilesActivity to finish because of #320
LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(SCREEN_AND_VAULT_LOCKED));
} }
} }
} }

View File

@ -1,11 +1,15 @@
package org.cryptomator.presentation.ui.activity package org.cryptomator.presentation.ui.activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.IntentFilter
import android.view.Menu import android.view.Menu
import android.view.View import android.view.View
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import org.cryptomator.domain.CloudNode import org.cryptomator.domain.CloudNode
import org.cryptomator.generator.Activity import org.cryptomator.generator.Activity
import org.cryptomator.generator.InjectIntent import org.cryptomator.generator.InjectIntent
@ -28,6 +32,7 @@ import org.cryptomator.presentation.model.comparator.CloudNodeModelSizeBiggestFi
import org.cryptomator.presentation.model.comparator.CloudNodeModelSizeSmallestFirstComparator import org.cryptomator.presentation.model.comparator.CloudNodeModelSizeSmallestFirstComparator
import org.cryptomator.presentation.presenter.BrowseFilesPresenter import org.cryptomator.presentation.presenter.BrowseFilesPresenter
import org.cryptomator.presentation.presenter.BrowseFilesPresenter.Companion.OPEN_FILE_FINISHED import org.cryptomator.presentation.presenter.BrowseFilesPresenter.Companion.OPEN_FILE_FINISHED
import org.cryptomator.presentation.service.CryptorsService
import org.cryptomator.presentation.ui.activity.view.BrowseFilesView import org.cryptomator.presentation.ui.activity.view.BrowseFilesView
import org.cryptomator.presentation.ui.bottomsheet.FileSettingsBottomSheet import org.cryptomator.presentation.ui.bottomsheet.FileSettingsBottomSheet
import org.cryptomator.presentation.ui.bottomsheet.FolderSettingsBottomSheet import org.cryptomator.presentation.ui.bottomsheet.FolderSettingsBottomSheet
@ -73,6 +78,8 @@ class BrowseFilesActivity : BaseActivity(), //
private var navigationMode: ChooseCloudNodeSettings.NavigationMode? = null private var navigationMode: ChooseCloudNodeSettings.NavigationMode? = null
private var finishActivityDueToScreenLockEventReceiver: BroadcastReceiver? = null
override fun setupView() { override fun setupView() {
setupToolbar() setupToolbar()
setupNavigationMode() setupNavigationMode()
@ -102,6 +109,28 @@ class BrowseFilesActivity : BaseActivity(), //
browseFilesIntent.chooseCloudNodeSettings() browseFilesIntent.chooseCloudNodeSettings()
) )
override fun onDestroy() {
super.onDestroy()
finishActivityDueToScreenLockEventReceiver?.let {
LocalBroadcastManager.getInstance(this).unregisterReceiver(it)
}
}
override fun onResume() {
super.onResume()
finishActivityDueToScreenLockEventReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
finish()
}
}
finishActivityDueToScreenLockEventReceiver?.let {
LocalBroadcastManager.getInstance(this).registerReceiver(it, IntentFilter(CryptorsService.SCREEN_AND_VAULT_LOCKED))
}
}
override fun onBackPressed() { override fun onBackPressed() {
browseFilesPresenter.onBackPressed() browseFilesPresenter.onBackPressed()
when { when {