首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Runnable未运行

Runnable未运行
EN

Stack Overflow用户
提问于 2018-03-17 03:57:13
回答 1查看 54关注 0票数 0

我正在写一个程序,用给定的迭代次数来计算π。我希望能够计时这需要多长时间,以及有多少电力正在使用。我有这个应用程序的另一个版本,它可以完美地工作,但是,使用相同的代码,这个版本就不行了,大部分代码都工作得很好,但是powerRunnable代码在被调用时并没有执行。有什么想法吗?

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {
//GUI
TextView piResultTextView, timeResultTextView,
        powerResultTextView, voltageTextView, averageCurrentTextView;
EditText piEditText;
Button calculateButton, stopButton;
TextView countView;

//GLOBAL VARIABLES
Results results;

Handler powerHandler = new Handler();
Runnable powerRunnable = new Runnable() {
    @Override
    public void run() {
        Toast.makeText(getApplicationContext(), "here", Toast.LENGTH_SHORT).show();
        long millis = System.currentTimeMillis() - results.initialTime;
        timeResultTextView.setText(getString(R.string.display_time, millis));

        double current = getCurrent();
        results.totalCurrent += current;
        results.count++;

        double power = current * results.voltage;
        results.powerConsumption += power;


        countView.setText(String.valueOf(results.count));


        powerHandler.postDelayed(this, 1);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    piEditText = findViewById(R.id.PiEditText);
    calculateButton = findViewById(R.id.CalculateButton);
    calculateButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (!empty()) {
                results = new Results(getVoltage());
                results.initialTime = System.currentTimeMillis();
                powerHandler.postDelayed(powerRunnable, 0);

                calculatePi(piEditText.getText().toString());
                finalizeResults();
                displayResults();
            }
        }
    });
    stopButton = findViewById(R.id.StopButton);
    stopButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            piResultTextView.setText("");
            timeResultTextView.setText("");
            powerResultTextView.setText("");
            voltageTextView.setText("");
            averageCurrentTextView.setText("");

            powerHandler.removeCallbacks(powerRunnable);
        }
    });
    piResultTextView = findViewById(R.id.PiResultTextView);
    timeResultTextView = findViewById(R.id.TimeResultTextView);
    powerResultTextView = findViewById(R.id.PowerResultTextView);
    voltageTextView = findViewById(R.id.VoltageTextView);
    averageCurrentTextView = findViewById(R.id.AverageCurrentTextView);

    countView = findViewById(R.id.CountView);
}

@Override
public void onPause() {
    super.onPause();
    powerHandler.removeCallbacks(powerRunnable);
}

public void finalizeResults() {
    results.endTime = System.currentTimeMillis();
    powerHandler.removeCallbacks(powerRunnable);
    results.powerConsumption *= 1000;
}

public void displayResults() {
    piResultTextView.setText(results.pi);
    timeResultTextView.setText(getString(R.string.display_time, results.getTime()));
    powerResultTextView.setText(getString(R.string.display_power, results.powerConsumption));
    voltageTextView.setText(getString(R.string.display_voltage, results.getVoltage()));
    averageCurrentTextView.setText(getString(R.string.display_current, results.getAverageCurrent()));
}
}
EN

回答 1

Stack Overflow用户

发布于 2018-03-17 05:25:57

我尝试在我的应用程序中使用你的那部分代码:

代码语言:javascript
复制
Handler powerHandler = new Handler();
Runnable powerRunnable = new Runnable() {
    @Override
    public void run() {
        Toast.makeText(getApplicationContext(), "here", Toast.LENGTH_SHORT).show();
        powerHandler.postDelayed(this, 1);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    ButterKnife.bind(this);

    powerHandler.postDelayed(powerRunnable, 0);
}

而且它起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49328600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档