我正在制作一个 Android SDK,并希望向开发人员公开一个计时器。我想完全控制计时器,例如何时启动、停止等。
我想到的解决方案之一是,如果开发人员传入一个 TextView,我可以根据计时器的计数不断更改 TextView 的文本。有什么方法可以将这个计数公开为一个值吗?
最佳答案
通常,处理此类情况的方法是使用回调接口(interface)。
只需创建一个回调接口(interface),如下所示:
public interface TimerListener {
void getTimerTick(long time);
}
然后将此接口(interface)添加为类中保存计时器的全局字段,包括“设置”此接口(interface)的方法...例如:
public class Timer {
...
private TimerListener listener;
...
public setTimerListener(TimerListener listener){
this.listener = listener;
}
...
}
最后,在代码的特定部分,您只需调用
if(listener != null)
listener.getTimerTick(time);
时间是通过计时器传递给您的值。通过代码的特定部分,我的意思是当您的计时器提供时间时。例如,如果您使用 CountDownTimer
,您可以将该监听器代码放置在 onTick()
方法中。
这样,当开发人员使用您的 SDK 时,如果他们对获取计时器感兴趣,他们只需编写如下内容:
customTimer.setTimerListener(new TimerListener(){
@Override
public void getTimerTick(long time){
textView.setText(String.valueOf(time));
}
});
通过回调接口(interface),如果开发人员感兴趣,您将能够向他们提供计时器值,并且他们将能够在 TextView、日志或他们想要的任何其他类型的计算中使用它他们的值(value)。
我建议不要传入 TextView,因为 View 是不应该粗心传递的东西。您最好向开发人员提供他们应该用来处理的值,而不是向您传递一个供 SDK 使用的 View 。
关于java - 在制作Android SDK时,有没有一种方法可以不断更新开发人员的值,而无需他们传递 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54303145/