第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 AsyncTask 顯示輸入流文件讀取進(jìn)度

使用 AsyncTask 顯示輸入流文件讀取進(jìn)度

ibeautiful 2021-12-10 17:10:34
我想顯示正在讀取的文件的進(jìn)度,并將其放入數(shù)組列表中。這樣做時,在應(yīng)用程序以列表視圖向用戶顯示數(shù)組列表之前,我想顯示通過 AsyncTask 讀取了多少文件。目前短暫顯示白屏。正在讀取的文件由大約 20000 行組成。AsyncTask( MyTask)在onCreate()方法中執(zhí)行,如下: private class MyAsync extends AsyncTask<Void, Integer, ArrayList<Movie>> {    ProgressDialog mProgressDialog;    ArrayList<Movie> movies;    @Override    protected void onPreExecute() {        super.onPreExecute();        //Show progress to user        mProgressDialog = new ProgressDialog(MovieRatingsActivity.this);        mProgressDialog.setTitle("Reading file");        mProgressDialog.setMessage("Reading file, Please Wait!");        mProgressDialog.setIndeterminate(false);        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);        mProgressDialog.show();    }    @Override    protected ArrayList<Movie> doInBackground(Void... voids) {        try {            InputStream inputStream = getResources().openRawResource(R.raw.ratings);            int count = inputStream.available();            // onProgressUpdate( (amount read by inputstream / size of file )* 100 );            movies = Movie.loadFromFile(inputStream);            return movies;        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    @Override    protected void onProgressUpdate(Integer... progress) {        super.onProgressUpdate(progress);        mProgressDialog.setProgress(progress[0]);    }    @Override    protected void onPostExecute(ArrayList<Movie> movies) {        super.onPostExecute(movies);        mProgressDialog.dismiss();        mInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);        setListAdapter(new RowIconAdapter(getApplicationContext(), R.layout.listrow, R.id.row_label, movies));    }}
查看完整描述

1 回答

?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個贊

內(nèi)部doInBackground()調(diào)用publishProgress(value),其中 value 是一個整數(shù),表示已完成工作的百分比。

這將觸發(fā)onProgressUpdate()并且您獲得先前傳遞的值progress[0],然后您可以相應(yīng)地更新進(jìn)度條。

編輯工作完成百分比的計(jì)算只能在while循環(huán)中進(jìn)行l(wèi)oadFromFile()。因此,在這種情況下,更容易loadFromFile()將其所有代碼刪除并放入doInBackground(). 然后像這樣修改循環(huán):


int counter = 0;

while ((line = br.readLine()) != null) {

    String lRatings = line.substring(0,3).trim();

    String lVotes = line.substring(4,12).trim();

    String lName = line.substring(13).trim();

    movies.add(new Movie(lName, lRatings, lVotes));

    counter++;

    if ((counter % 200) == 0)

        publishProgress(counter / 200)

該值counter / 200將是已完成工作的 1%,但如果它很耗時,您可以更改它


查看完整回答
反對 回復(fù) 2021-12-10
  • 1 回答
  • 0 關(guān)注
  • 188 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號