android给定两个数,单击按钮求两个数的和,练习时间监听,三种方法
时间: 2024-10-06 11:04:32 浏览: 17
在Android应用中,给定两个数字并让用户点击按钮计算它们的和,同时需要考虑时间监听,可以使用以下三种常见的方法实现:
1. **Activity内直接操作**:
- 在`Button`的`OnClickListener`中,你可以创建一个`TextView`用于显示结果,并在按钮被点击时获取用户输入的数字,然后计算它们的和:
```java
Button button = findViewById(R.id.button);
TextView resultView = findViewById(R.id.result_view);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText num1EditText = findViewById(R.id.num1_edit_text);
EditText num2EditText = findViewById(R.id.num2_edit_text);
int num1 = Integer.parseInt(num1EditText.getText().toString());
int num2 = Integer.parseInt(num2EditText.getText().toString());
long startTime = System.currentTimeMillis();
int sum = num1 + num2;
long endTime = System.currentTimeMillis();
// 更新结果显示时间和和值
resultView.setText(String.format("Sum: %d\nTime taken: %d ms", sum, (endTime - startTime)));
}
});
```
2. **使用`AsyncTask`异步处理**:
如果希望在后台计算,防止阻塞UI线程,可以使用`AsyncTask`来实现异步求和并在完成后更新结果:
```java
class SumCalculator extends AsyncTask<Void, Void, Pair<Integer, Long>>() {
@Override
protected Pair<Integer, Long> doInBackground(Void... params) {
int num1 = ...;
int num2 = ...;
int sum = num1 + num2;
long timeTaken = System.currentTimeMillis();
return new Pair<>(sum, timeTaken);
}
@Override
protected void onPostExecute(Pair<Integer, Long> result) {
// 更新UI
updateResult(result.first, result.second);
}
}
```
3. **使用Kotlin的LiveData或MVVM架构**:
如果使用Jetpack Architecture Components,可以将计算逻辑放在ViewModel里,通过LiveData传递结果到UI界面:
```kotlin
class MyViewModel : ViewModel() {
val sumAndTime: LiveData<Pair<Int, Long>> = MutableLiveData()
fun calculateSum(num1: Int, num2: Int) {
val start = System.currentTimeMillis()
val sum = num1 + num2
val end = System.currentTimeMillis()
sumAndTime.value = Pair(sum, end - start)
}
}
// UI部分订阅LiveData
viewModel.sumAndTime.observe(this, Observer { pair ->
updateResult(pair.first, pair.second)
})
```
阅读全文