程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 線程-android 獲取進度條進度值,獲取有問題

線程-android 獲取進度條進度值,獲取有問題

編輯:編程解疑
android 獲取進度條進度值,獲取有問題

android 獲取進度條進度值,加斷點可以獲取到,不加斷點就獲取不到,,而且加斷點是每次跑的值都不一樣

這個是代碼的一部分,,

btn_dignosis.setVisibility(View.GONE);
        cirProgress.setVisibility(View.VISIBLE);
        startProgress(); // 加載進度條
        currentProgress = cirProgress.getProgress();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                    currentProgress = cirProgress.getProgress();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
        tv_info.setText("重新檢測");
        tv_info.setEnabled(true);
        // 獲取當前系統時間
        tv_lastScanTime.setText(getSysDate());
        // 下劃線
        tv_info.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
        tv_info.getPaint().setAntiAlias(true);// 抗鋸齒
        // 重新檢測加載進度條
        tv_info.setClickable(true);
        tv_info.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                startProgress(); // 重新加載進度條
            }
        });




        下面是startProgress()方法的代碼

        // 加載進度條
private void startProgress() {

    if (!running) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (progress <= 58) {
                    progress += 2;
                    cirProgress.setProgress(progress);
                    try {
                        Thread.sleep(70);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                progress = 0;
                running = false;
            }
        }).start();
    }
}

最佳回答:


你在線程外獲取線程裡邊的值,當自動運行的時候,兩句代碼之間執行消耗的時間很小,所以currentProgress不加斷點的時候都是0,當你debug調試的時候,因為debug會卡在currentProgress = cirProgress.getProgress(); 給線程足夠的時間能夠運行,所以debug的時候能夠獲取到數據。
你可以使用 Mr_dsw 的方案或者使用AsyncTask。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved