我认为这对这个社区的许多人来说是一个非常简单的问题,然而,经过几次实验,我还是无法做到这一点;我会很感激任何帮助。
它是JAVA-安卓平台:当用户单击按钮时,代码需要执行以下步骤:
1.使按钮不可见(在主线程中运行)
1.使进度条可见(在主线程中运行)
1.从互联网下载文件(在后台线程中运行)
1.等待下载完成
1.使进度条不可见
1.使按钮再次可见
就是这样。看起来并不难,但是,它并不像我所需要的那样起作用。
这就是问题所在:第3步在第1步和第2步之前执行,......我已经尝试了几次实验,但没有成功。
private void f1()
{
mDataBinding.btnPausePlay.setVisibility(btnVisibility);
mDataBinding.progressPausePlay.setVisibility(progressVisibility);
}
private void f2()
{
Thread xThread = new Thread( new Runnable()
{ @Override
public void run() // run in background thread
{ httpRequest_noBackgroundThread( urlStr, urlParams, fileStr, itf ); }
});
try
{
xThread.start();
xThread.join(); // wait for the thread to finish
}
catch( Exception e ){ e.printStackTrace(); }
}
private void f3()
{
f1();
f2();
// continues execution ...
}
###########################################################
基于沙根·维尔马的反馈;这是对我的具体问题的修复。谢谢!
private void f3()
{
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(() ->
{
f1();
f2();
// continues execution ...
});
}
1条答案
按热度按时间wqsoz72f1#
要实现这一点,您必须使用Java中的
Executors
。下面的代码将为您完成这项工作-当您按下btnPausePlay按钮时,它将变为不可见,而进度条变为可见。之后,一旦下载完成,则会发生相反的情况。