Как загрузить ранее загруженный pdf из кеша или внешнего хранилища - PullRequest
0 голосов
/ 04 сентября 2018
public class physics extends AppCompatActivity {
PDFView pdfViewph;
ImageView image;

ProgressBar progressbar;


    TextView ans4 = (TextView) findViewById(R.id.ans4);

    // Set a click listener on that View
    ans4.setOnClickListener(new View.OnClickListener() {
        category is clicked on.
        @Override
        public void onClick(View view) {

            new RetrievePDFBytes().execute("https://docs.google.com/uc?authuser=0&id=0B7aQiU7nV3LranpkTi1FZ2hOZmc&export=download");
        }
    });}
class RetrievePDFBytes  extends AsyncTask<String,Void,byte[]> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    progressbar = (ProgressBar)findViewById(R.id.ProgressBar);
    progressbar.setVisibility(View.VISIBLE);
    }

    @Override
    protected byte[] 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;
        }
        try {
            return IOUtils.toByteArray(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(byte[] bytes) {
        progressbar.setVisibility(View.INVISIBLE);;
         pdfViewph.setVisibility(View.VISIBLE);
         pdfViewph.fromBytes(bytes).load();






    }
}
}

`Я пытаюсь создать приложение, в котором каждая кнопка загружает книгу, но я хочу лишь нажать кнопку, чтобы загрузить книгу только в первый раз. Затем, если пользователь снова щелкнет по истечении некоторого времени, чтобы завершить чтение, загрузите его из файла или кэша вместо повторной загрузки всего.

1 Ответ

0 голосов
/ 04 сентября 2018

Когда кнопка нажата, запустите функцию, чтобы проверить, существует ли файл первым, что-то вроде этого:

public boolean fileExists(String filename){
    File f= getBaseContext().getFileStreamPath(filename);
    return f.exists();
}

Если функция возвращает true, то вы знаете, что пользователь уже загружал этот файл. Просто используйте этот файл вместо запуска загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...