[英]How to stop timer of an activity from another activity
现在我有一个活动,比方说运行计时器的“活动A”。 时间到了,可以更新我的Firebase。
timer.scedule(new TimerTask()){ @Override public void run() { notification(); Firebase areaRef = mAreaRef.child(bKey); areaRef.addListenerForSingleValueEvent(new com.firebase.client.ValueEventListener() { @Override public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) { checkData = dataSnapshot.child("data").getValue(Integer.class); Integer addData = checkData+1; } @Override public void onCancelled(FirebaseError firebaseError) { } }); } },millis);
“活动B”中将有一个按钮。 单击该按钮时,“活动A”中的计时器必须停止。
我该怎么做呢?
同一时间只能激活一个“活动”。 您的“活动A”可以由服务代替。 然后,通过“活动B”直接调用服务方法来解决问题,方法是在单击按钮时停止计时器。
如果您的计时器任务确实确实需要跨活动进行,那么也许您应该考虑在特定活动中使用服务而不是计时器。
1.将Timer更改为CountDownTimer
调用start()
开始调用cancel()
停止。 如何通知活动A停止CountDownTimer
,可以将SharedPreferences更改为其他方式来处理数据通知
public class MainActivity extends AppCompatActivity {
CountDownTimer timer = new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
SharedPreferences sharedPreferences = getSharedPreferences("count", 0);
if (sharedPreferences.getBoolean("stop", false)) {
timer.cancel();
} else {
Log.d("tag", millisUntilFinished / 1000 + "");
}
}
public void onFinish() {
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer.start();
Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
}
}
public class ActivityB extends AppCompatActivity {
Button mStop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
mStop =(Button) findViewById(R.id.stop);
mStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences sharedPreferences = getSharedPreferences("count",0);
SharedPreferences.Editor edit= sharedPreferences.edit();
edit.putBoolean("stop", true);
edit.apply();
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.