我执行第一个循环9秒后执行第二个循环。这是棘手的部分。有什么方法我可以确认第一个循环正在执行,然后才执行第二个循环。我不想要计时器和延迟,因为它非常危险
First Loop:
if (!adminpermissiondenied) {
if (!pattern && !pinorpassword) {
/*Set Password*/
//Toast.makeText(context, "Setting Password", Toast.LENGTH_SHORT).show();
Log.d("Admin", "Setting Password");
devicePolicyManager.setPasswordQuality(demoDeviceAdmin,DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
devicePolicyManager.setPasswordMinimumLength(demoDeviceAdmin, 5);
boolean result = devicePolicyManager.resetPassword("123456", DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
//Toast.makeText(context, "Password set : " + result, Toast.LENGTH_SHORT).show();
Log.d("Admin", "Password set : " + result);
/*Set Password ends*/
/*Set Password ends*/
}
}
第二圈:
/*Execute Checker Async Task with a delay of 9 seconds after Password is set*/
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Log.d("Admin", "Executing Checker Task");
//Toast.makeText(context, "Executing Checker Task", Toast.LENGTH_SHORT).show();
new checker().execute();
}
}, 9000); //After 9 seconds of setting password*/
/*Execute Checker Async Task with a delay of 9 seconds after Password is set ends*/
答案 0 :(得分:2)
使用接口回调。
例如,创建一个这样的界面:
public interface OnTaskCompletedListener{
void onTaskCompleted();
}
然后将您的第一个while
放入接受OnTaskCompletedListener
的方法中,一旦完成,就调用onTaskCompleted()
:
private void doFirstTask(OnTaskCompletedListener listener){
while(someConditionIsTrue){
// execute
}
// if we got this far, it means the while has finished its job,
// so we can use the listener to notify for completion.
listener.onTaskCompleted();
}
现在将第二个while
循环放在另一个启动第一个任务的方法中,并监听完成。
private void doSecondTask(){
doFirstTask(new OnTaskCompletedListener(){
// this code will execute when the first method will complete,
// so you can start here your second loop
while(someConditionIsTrue){
// execute
}
});
}
答案 1 :(得分:1)
当你完成第一个循环然后在执行第二个循环或之后检查这个变量时,你不能使一个布尔变量为true 从你知道第一个循环完成的地方调用第二个循环。