当Countdown OnFinish来自另一个活动时,如何调用方法



我有一个类有一个CountDownTimer,它将在我的整个项目中使用,我想从不同的活动中调用Countdown onFinish((的不同方法。

这是我的CountDownTimer类;

public class CountDownTimer {
private static final long START_TIME_IN_MILLIS = 10000;
private long timeLeftInMillis = START_TIME_IN_MILLIS;
private final TextView textViewCountDown;
private CountDownTimer countDownTimer;
private boolean timerRunning;
public CountDownTimer(TextView textView) {
this.textViewCountDown = textView;
startTimer();
}
public void startTimer() {
countDownTimer = new android.os.CountDownTimer(timeLeftInMillis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
timeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
timerRunning = false;
}
}.start();
timerRunning = true;
}
public void resetTimer() {
timeLeftInMillis = START_TIME_IN_MILLIS;
updateCountDownText();
}
public void pauseTimer() {
countDownTimer.cancel();
timerRunning = false;
}
}

示例场景-一旦提示特定活动,倒计时将开始,用户有10秒的时间做他想做的任何事情,否则它将自动收集数据并进行验证。因此,一旦10s结束验证,数据收集方法就应该从活动中调用。

我是Android开发的新手,提前感谢!

实现这一点有多种方法,每种方法都有不同的偏好。对于你的用例,我想你可以看看广播。让所有需要在倒计时后执行操作的活动都实现一个BroadcastReceiver,它会对CountDownTimer发送的广播做出反应。

另一种选择是实现某种事件处理方式。Android不提供事件API,但您可以查看EventBus库。或者,您也可以编写自己的事件框架。对于像你这样的简单案例来说,它不应该太复杂。

如果我必须从应用程序的其他地方调用方法/函数,我会使用接口。

例如:

这是一项活动:


public class SomeActivity extends AppCompatActivity implements RemoteRunner.RemoteRunnerCallback{

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about_us);
RemoteRunner remoteRunnerObject = new RemoteRunner(this); 
remoteRunnerObject.runExternalMethod(); // <--- This part calls the showMessage() function
}
private void showMessage(String message){
Toast.makeText(this, message,Toast.LENGTH_LONG).show();
}
@Override
public void onRemoteCalled(String message)
}

我想从这个类在SomeActivity中运行一个方法:

public class RemoteRunner{

public interface RemoteRunnerCallback{
void onRemoteCalled(String message);
}
private RemoteRunnerCallback remoteRunnerListener;

public RemoteRunner(RemoteRunnerCallback remoteRunnerListener){
this.remoteRunnerListener = remoteRunnerListener;
}
public void runExternalMethod(){
remoteRunnerListener.onRemoteCalled("This message is from RemoteRunner");
}
}

相关内容

  • 没有找到相关文章

最新更新