【发布时间】:2018-11-01 02:57:29
【问题描述】:
此代码位于按钮的 OnClickListner 下
String username = edtLabel.getText().toString():
char[] password = new char[edtPassword.getText().length()];
edtPassword.getText().getChars(0, edtPassword.getText().length(), password,0);
new BackGroundTask(username, password).execute();
Arrays.fill(password, '0');
我在这里面临的问题是传递给 BackGroundTask 构造函数(一个 AsyncTask 类)的密码始终是一个零数组,即 {0,0,0}。虽然我在设置构造函数后调用了 Arrays.fill() 函数。
代码比给定的 sn-p 长一点,验证了其他几件事,但在任何时候都不会更改密码。
我已经到处找了很长一段时间,但什么也没找到。 我看到的唯一解决方案是使用一个在几百毫秒后执行的处理程序,它用零填充密码。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Arrays.fill(password, '0');
}
}, 100);
任何更好和直接的技术都会很棒,谢谢。
【问题讨论】:
-
你想在
BackGroundTask完成后执行Arrays.fill(password, '0');吗? -
后台任务与当前线程并行执行。因此,在其调用之后的代码行可以与任务并行执行,甚至可以在任务之前执行。如果您不想这样做,请不要使用该功能。
-
可以,或者在构造函数正确接受之后
标签: java android arrays passwords