У меня есть файл PDF на моей базе Firebase.Я использую библиотеку AndroidPDFViewer .Затем я получаю данные, используя AsyncTask
.
. Я хочу знать, как остановить мой ProgressBar, используя функцию isFinishedI()
в моем классе представления, так как этот цикл while не завершается?
public class PDFHandler {
private PDFView pdfView = null;
private RetriverPDFStream retriverPDFStream;
private RetriverPDFStream getRetriverPDFStream(){ return this.retriverPDFStream; }
public void setPdfView(PDFView pdfView)
{
this.pdfView = pdfView;
}
public void openOnline(String link)
{
retriverPDFStream = new RetriverPDFStream();
retriverPDFStream.execute(link);
}
public boolean isFinished ()
{
if(getRetriverPDFStream().getStatus() == AsyncTask.Status.RUNNING){
return false;
}else{
return true;
}
}
//This class to retrieve pdf online asynchronously
public class RetriverPDFStream extends AsyncTask<String,Void, InputStream> {
@Override
protected InputStream doInBackground(String... strings) {
InputStream inputStream = null;
try{
URL url = new URL(strings[0]);
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
if(urlConnection.getResponseCode() == 200)
{
inputStream = new BufferedInputStream(urlConnection.getInputStream());
}
}catch (IOException e){
return null;
}
return inputStream;
}
@Override
protected void onPostExecute(InputStream inputStream) {
pdfView.fromStream(inputStream).load();
}
}
}
При создании метода
protected void onCreate(Bundle savedInstanceState) {
pdfView = findViewById(R.id.pdfView);
progressBar = findViewById(R.id.progressBar);
//This is function read PDF from URL
PDFHandler pdfHandler = new PDFHandler();
pdfHandler.setPdfView(pdfView);
pdfHandler.openOnline(link);
progressBar.setVisibility(View.VISIBLE);
while(!pdfHandler.isFinished()){
progressBar.setVisibility(View.INVISIBLE);
}