private void onPasswordChecked(
     final CheckAppPasswordTask task, final AsyncResult<Boolean> result) {
   final Optional<? extends Boolean> isValid = result.getResult();
   if (!isValid.isPresent()) {
     Toaster.instance().show(R.string.errormessage_error_occured);
     return;
   }
   if (isFinishing()) {
     return;
   }
   if (isValid.get()) {
     try {
       if (_simplyFinish) {
         finish();
         return;
       }
       if (new AccountRepository().any()) {
         final Bundle extras = getIntent().getExtras();
         if (extras != null && extras.containsKey(DashboardActivity.EXTRA_PARC_ACCOUNT_ADDRESS)) {
           final Intent intent = new Intent(this, DashboardActivity.class).putExtras(extras);
           finish();
           startActivity(intent);
         } else {
           final AppSettings appSettings = AppSettings.instance();
           final Optional<AddressValue> primaryAddress = appSettings.getPrimaryAddress();
           if (primaryAddress.isPresent()) {
             final Intent intent =
                 new Intent(this, DashboardActivity.class)
                     .putExtra(DashboardActivity.EXTRA_PARC_ACCOUNT_ADDRESS, primaryAddress.get());
             finish();
             startActivity(intent);
             return;
           }
           final Optional<AddressValue> lastAddress = appSettings.readLastUsedAccAddress();
           if (lastAddress.isPresent()) {
             final Intent intent =
                 new Intent(this, DashboardActivity.class)
                     .putExtra(DashboardActivity.EXTRA_PARC_ACCOUNT_ADDRESS, lastAddress.get());
             finish();
             startActivity(intent);
           } else {
             AccountListActivity.start(this);
           }
         }
       } else {
         startActivity(new Intent(this, AddAccountActivity.class));
       }
     } catch (NacPersistenceRuntimeException e) {
       Toaster.instance().show(R.string.errormessage_error_occured, Toaster.Length.LONG);
     }
   } else if (_passwordInput != null) {
     InputErrorUtils.setErrorState(_passwordInput, R.string.errormessage_invalid_password);
   }
 }
 @Override
 protected void onResume() {
   super.onResume();
   if (!ServerFinder.instance().peekBest().isPresent()) {
     ServerFinder.instance().getBestAsync();
   }
   final Bundle extras = getIntent().getExtras();
   final Optional<BinaryData> eKey = EKeyProvider.instance().getKey();
   if (eKey.isPresent()) {
     Timber.d("Key present, checking...");
     _dialogLayout.setVisibility(View.GONE);
     showProgressDialog(R.string.progress_dialog_message_password_checking);
     getHandler()
         .postDelayed(
             () -> {
               if (isNotDestroyed()) {
                 if (extras != null
                     && extras.containsKey(DashboardActivity.EXTRA_PARC_ACCOUNT_ADDRESS)) {
                   final Intent intent =
                       new Intent(this, DashboardActivity.class).putExtras(extras);
                   startActivity(intent);
                 } else if (lastUsedAddress != null) {
                   final Intent intent = new Intent(this, DashboardActivity.class);
                   if (extras != null && !extras.isEmpty()) {
                     intent.putExtras(extras);
                   }
                   startActivity(intent);
                 } else {
                   AccountListActivity.start(this);
                 }
                 finish();
               }
             },
             1000);
   } else {
     Timber.d("Key not present, waiting for password input");
   }
 }