Android - 如何执行一个循环,获得完成确认,然后再执行另一个循环

时间:2015-01-14 07:45:34

标签: android

我执行第一个循环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*/

2 个答案:

答案 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 从你知道第一个循环完成的地方调用第二个循环。