Asycntask の onprogressupdate は常に呼び出されています。
@Override
protected void onProgressUpdate(Integer... values) {
pbSubStatus.incrementProgressBy(values[1]);
rawNum = values[0];
...
}
そして外部クラスでは:
private double getCurrentTime() {
return currentTime;
}
private void doSomethingOnThread() {
LinearLayout layout = (LinearLayout) findViewById(R.id.main);
sMeter = new Meter(context);
layout.addView(sMeter);
final Handler mHandler = new Handler();
new Thread() {
@Override
public void run() {
while (running) {
previousTime = getCurrentTime();
previousNum = getRawNum();
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
currentTime=getCurrentTime();
currentNum = getRawNum();
mHandler.post(mUpdateResults);
}
}
}.start();
}
final Runnable mUpdateResults = new Runnable() {
public void run() {
updateResultsInUi();
}
};
private void updateResultsInUi() {
if(previousNum>currentNum){
return;//TODO
}else{
int temp=currentNum-previousNum;//Problem here, both num are same.
double timeTemp=currentTime-previousTime;
someField= (float)( temp/timeTemp);
}
sMeter.setTarget(someField);//this should be last line to be executed in this snippt
}
したがって、問題は、previousNum と currentNum が常に同じ数値を返すことです。onProgressupdate から新しい (getRawNum()) を取得するために、スレッドが 1.5 秒待機するようにします。しかし、彼らが同じ番号を返していることを理解していません。アドバイスをありがとう。