0

だから私はものをダウンロードするこのクラスを持っています...そして私はこの人の例に基づいて NotificationHelper を実装しています

private class DatabaseStorageTask extends AsyncTask<String, Integer, String> {

    protected String doInBackground(String... params) {

        for(int i=0; i<10; i++){
            //codes here

            downloadFileCount++;
            publishProgress( (int) ((downloadFileCount/totalDownloadFileCount) * 100 ) );
        }
    }

    protected void onProgressUpdate(Integer... progress){
        Log.e("progressupdate", "in progressupdate");
        mNotificationHelper.progressUpdate(progress[0]);
    }

}

これは、コード内で何が起こっているかの要点です。正確であることを確認した downloadFileCount と totalDownloadFileCount の Log.e() 印刷を行ったにもかかわらず、通知が常に 0% を表示しているため、問題の原因を特定できません。

パーセンテージの進行状況が更新されない原因となる、見逃したものはありますか?

編集:わかりましたので、どこにでも Log.e() を配置しました。問題はちょっとわかりましたが、解決策はわかりません。パーセンテージと計算はすべて正常に機能し、正しい数値を示しています。ただし、publishProgress が呼び出されると、onProgressUpdate は呼び出されません。Log.e("progressupdate", "in progressupdate") がまったく表示されません。

4

2 に答える 2

0

多分それは

    protected String doInBackground(String... params) {

    while(downloadFileCount<100){ //try while instead of for-loop


        downloadFileCount++;
        publishProgress(downloadFileCount); //only count downloadFileCount
    }
}

それが解決策かどうかわからない、それはただのアイデアだ……。

于 2013-02-22T12:19:08.127 に答える
0

答えは、パーセンテージを取得するためにint値ではなくfloat値を使用することにあります。

例:20の5 = 25%

5/20 = 0.25

int=0を使用する場合int*100 = 0

float =0.25floatを使用する場合*100= 25

于 2013-02-22T12:25:04.220 に答える