2017-02-18 3 views
0

Так что я сохранил пароль как хэш в общих настройках, когда пользователь вводит пароль, мне нужно сделать хэш и сравнить его с сохраненным.Сравнение паролей в Android

Должно ли это быть сделано в AsyncTask или Thread, потому что вычисление и сравнение могут заморозить интерфейс? И тогда вы знаете, какой способ получить результат (true, false) из asynctask или thread?

public void startGenerateCode(View view) { 
    String pinCompare = pin; //pin is class variable obtained from editText 
    pinCompare = tools.bin2hex(tools.getHash(pinCompare)); 

    if(pinCompare.compareTo(session.getDetails("Pin"))==0){ 
     generateCode(); 
    } 
    else 
     Toast.makeText(this, "Wrong PIN", Toast.LENGTH_SHORT).show(); 

} 

public void generateCode(){ 
    Intent i = new Intent(this, GeneratedCode.class); 
    startActivity(i); 
    overridePendingTransition(R.anim.right_slide_in, R.anim.right_slide_out); 
    finish(); 
} 

Это делается в действии после нажатия кнопки.

+0

Вы можете сравнить на onPost в asyncktask –

+0

@android_jain, так что asyncTask подходит для этого? И могу ли я начать новую деятельность в onPost? Когда активность убита раньше, тогда сравнение завершено, тогда onPost может начать следующую активность? – Zolo

+0

что вы хотите объяснить, явным образом запутываю ваш вопрос –

ответ

2

Zolo,

Я думаю, этот процесс запускается, когда кто-то нажимает Button, такие как логин. Я не думаю, что вам нужно дополнительное Thread для обработки исчисления Hash.

Если вам необходимо подключиться к серверу и отправить/получить данные, вы должны использовать его из-за асинхронного потока.

Ответ на комментарии о главном сообщении: Да, вы можете начать Управлять деятельностью в onPostExecute.

Пример кода:

public void startGenerateCode(View view) { 

    // Disable button   
    Button button = (Butto) view; 
    button.setEnabled(false); 

    String pinCompare = pin; //pin is class variable obtained from editText 
    pinCompare = tools.bin2hex(tools.getHash(pinCompare)); 

    if(pinCompare.compareTo(session.getDetails("Pin"))==0){ 
     generateCode(); 
    } else { 
     // If the login fails, re-enable the button to try again 
     button.setEnabled(true); 
     Toast.makeText(this, "Wrong PIN", Toast.LENGTH_SHORT).show(); 
    } 
} 

Я сделал это сердце, так что могут быть ошибки.

+0

Да, процесс запускается после нажатия кнопки. Но я сделал это так, и как только я попробовал приложение, и нажал кнопку, он начал сравнение, и новая активность не началась. Я снова нажал на нее, и когда я нажал кнопку, у меня была эта активность дважды в ActivityStack ... Мне не удалось сделать это снова, но это произошло. – Zolo

+0

@ Zolo Это еще одна проблема. Если вам нужна помощь в этом, по крайней мере, отправьте свой код. – JonZarate

+0

Код товара для сравнения – Zolo

Смежные вопросы