如何解决如何在不暂停Android / Java当前运行线程的情况下暂停当前循环?
在我的android应用程序中,在我的片段中,我有一个 while循环,例如
startMs=0,endMs=30000;
while(i<10){
new Mp4Composer(inputPath,destPath)
.trim(startMs,endMs)
.listener(new Mp4Composer.Listener() {
@Overide
public void onCompleted(){
}
}
.start();
startMs= endMs;
endMs+=30000;
i++
}
这里新的Mp4Composer 是一个线程...此任务在循环的每次迭代中都执行。.没有完成上一个任务(任务仍处于处理状态)...循环跳了到下一次迭代。因此,现有任务不会产生任何输出...并且由于循环而跳至下一个任务。
因此,我想要的是 while循环,应等待完成新的Mp4Composer 每个任务。通过使用 public void onCompleted()方法...,我们可以确定何时为每个任务完成异步任务。
在这里,我不应该暂停当前正在运行的线程(循环运行时所在的类)。原因是当我在while循环中放置类线程,总UI和Android应用程序暂停时暂停。我对Thread的了解不多。
解决方法
使用处理程序,而不是while循环
,Handler mHandler = new Handler();
int startMs=0,endMs=30000,i=0;
Runnable action = new Runnable(){
@Override
public void run() {
new Mp4Composer(inputPath,destPath)
.trim(startMs,endMs)
.listener(new Mp4Composer.Listener() {
@Overide
public void onCompleted(){
goNext();
}
}
.start();
}
};
void goNext(){
if(i < 10) {
startMs = endMs;
endMs += 30000;
i++;
mHandler.postDelayed(action,2000); //2 second
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。