在制作和 Android SDK 时,有没有一种方法可以在开发人员不传递视图的情况下不断更新他们的价值?
While making and Android SDK, is there a way to constantly update the developer with a value without them passing in a view?
我正在制作一个 Android SDK 并想向开发人员公开一个计时器。我想完全控制计时器,例如何时启动、停止等。
我想到的解决方案之一是如果开发人员传入一个TextView,我可以不断地根据计时器的计数更改TextView 的文本。有什么办法可以将此计数公开为一个值吗?
通常,处理这种情况的方法是使用回调接口。
像这样简单地创建一个回调接口:
public interface TimerListener {
void getTimerTick(long time);
}
然后将此接口添加为保存计时器的 class 中的全局字段,包括 'set' 此接口的方法...例如:
public class Timer {
...
private TimerListener listener;
...
public setTimerListener(TimerListener listener){
this.listener = listener;
}
...
}
最后,在代码的特定部分,您只需调用
if(listener != null)
listener.getTimerTick(time);
其中 time 是通过计时器传递给您的值。通过代码的特定部分,我的意思是当您的 Timer 提供时间时。例如,如果您使用 CountDownTimer
,您可以将该侦听器代码放在 onTick()
方法中。
这样,当开发人员使用您的 SDK 时,如果他们有兴趣获取计时器滴答声,他们只需编写如下内容:
customTimer.setTimerListener(new TimerListener(){
@Override
public void getTimerTick(long time){
textView.setText(String.valueOf(time));
}
});
使用回调接口,如果开发人员感兴趣,您将能够向他们提供计时器值,他们将能够在他们的 TextView、日志或任何其他类型的计算中使用它想要他们的价值。
我建议不要传递 TextView,因为视图是不应该随意传递的东西。与其向您传递一个 View 让您的 SDK 继续工作,您不如为开发人员提供他们应该用来工作的值。
我正在制作一个 Android SDK 并想向开发人员公开一个计时器。我想完全控制计时器,例如何时启动、停止等。
我想到的解决方案之一是如果开发人员传入一个TextView,我可以不断地根据计时器的计数更改TextView 的文本。有什么办法可以将此计数公开为一个值吗?
通常,处理这种情况的方法是使用回调接口。
像这样简单地创建一个回调接口:
public interface TimerListener {
void getTimerTick(long time);
}
然后将此接口添加为保存计时器的 class 中的全局字段,包括 'set' 此接口的方法...例如:
public class Timer {
...
private TimerListener listener;
...
public setTimerListener(TimerListener listener){
this.listener = listener;
}
...
}
最后,在代码的特定部分,您只需调用
if(listener != null)
listener.getTimerTick(time);
其中 time 是通过计时器传递给您的值。通过代码的特定部分,我的意思是当您的 Timer 提供时间时。例如,如果您使用 CountDownTimer
,您可以将该侦听器代码放在 onTick()
方法中。
这样,当开发人员使用您的 SDK 时,如果他们有兴趣获取计时器滴答声,他们只需编写如下内容:
customTimer.setTimerListener(new TimerListener(){
@Override
public void getTimerTick(long time){
textView.setText(String.valueOf(time));
}
});
使用回调接口,如果开发人员感兴趣,您将能够向他们提供计时器值,他们将能够在他们的 TextView、日志或任何其他类型的计算中使用它想要他们的价值。
我建议不要传递 TextView,因为视图是不应该随意传递的东西。与其向您传递一个 View 让您的 SDK 继续工作,您不如为开发人员提供他们应该用来工作的值。