Android应用开发利用回调机制:设计 咨询类 包含方法提供咨询,根据咨询者的提问给出答案; 咨询者类,提出问题给咨询类,显示答案。
时间: 2024-10-14 15:10:19 浏览: 16
Android Studio实现一个记账本,功能丰富,详细注释,优秀设计!
5星 · 资源好评率100%
在Android应用开发中,回调机制是一种常见的设计模式,用于处理异步操作的结果。它通过创建一个专门的`咨询服务`类,该类包含一系列方法供其他组件调用,当需要获取信息时。例如,这个类可以有一个`askQuestion()`方法,接受用户的提问作为参数。
咨询类的设计通常会包含以下几个部分:
1. **接口或抽象类**:定义一个公共的接口,比如`Callback`,其中包含了表示结果的回调函数,如`onAnswerReceived()`,用户可以在得到答案后调用这个方法。
```java
public interface ConsultationCallback {
void onAnswerReceived(String answer);
}
```
2. **咨询类实现**:具体实现这个接口,存储问题并在完成查询后调用自己的回调方法来传递答案。
```java
public class ConsultingService implements ConsultationCallback {
private String answer;
public void askQuestion(String question, ConsultationCallback callback) {
// 异步查询数据...
new Thread(new Runnable() {
@Override
public void run() {
// 模拟查询耗时操作
try {
// 查询并设置答案
answer = "查询到的答案...";
// 回调结果
callback.onAnswerReceived(answer);
} catch (Exception e) {
callback.onError(e);
}
}
}).start();
}
@Override
public void onAnswerReceived(String answer) {
// 当然,在实际情况下,你会在这里处理答案
}
@Override
public void onError(Throwable error) {
// 错误处理逻辑
}
}
```
用户端,即“咨询者”类,会这样做:
1. 创建`ConsultationCallback`的一个实例,并将其传入`askQuestion()`方法。
```java
UserInterface userInterface = new UserInterface();
ConsultingService service = new ConsultingService();
service.askQuestion("你好,今天天气如何?", userInterface); // 用户界面将接收到answer
```
2. `UserInterface`类负责接收并展示答案,以及处理错误情况:
```java
public class UserInterface implements ConsultationCallback {
@Override
public void onAnswerReceived(String answer) {
displayAnswer(answer);
}
@Override
public void onError(Throwable error) {
showError(error.getMessage());
}
private void displayAnswer(String answer) {
// 显示答案的部分
}
private void showError(String errorMessage) {
// 处理错误的部分
}
}
```
阅读全文