#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() {}
fun destroy() {
logLifecycle("destroy")
unsubscribeAll()

View File

@ -8,6 +8,7 @@ import android.content.IntentFilter;
import android.os.IBinder;
import androidx.annotation.Nullable;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import org.cryptomator.data.cloud.crypto.Cryptors;
import org.cryptomator.presentation.util.FileUtil;
@ -23,6 +24,7 @@ import timber.log.Timber;
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 final Cryptors.Default cryptors = new Cryptors.Default();
private final AutolockTimeout autolockTimeout = new AutolockTimeout();
@ -211,6 +213,9 @@ public class CryptorsService extends Service {
destroyCryptorsAndHideNotification();
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
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.view.Menu
import android.view.View
import androidx.appcompat.widget.SearchView
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import org.cryptomator.domain.CloudNode
import org.cryptomator.generator.Activity
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.presenter.BrowseFilesPresenter
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.bottomsheet.FileSettingsBottomSheet
import org.cryptomator.presentation.ui.bottomsheet.FolderSettingsBottomSheet
@ -73,6 +78,8 @@ class BrowseFilesActivity : BaseActivity(), //
private var navigationMode: ChooseCloudNodeSettings.NavigationMode? = null
private var finishActivityDueToScreenLockEventReceiver: BroadcastReceiver? = null
override fun setupView() {
setupToolbar()
setupNavigationMode()
@ -102,6 +109,28 @@ class BrowseFilesActivity : BaseActivity(), //
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() {
browseFilesPresenter.onBackPressed()
when {