现在我有一个活动,让我们说'活动A'运行Timer。它是在时间到了时更新我的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”的计时器。
我该怎么做?
答案 0 :(得分:0)
在同一时间内只能激活一个“活动”。您的“活动A”可以由服务代替。然后你的问题通过'活动B'直接调用服务方法来解决,当点击按钮时停止计时器。
答案 1 :(得分:0)
如果您的计时器任务确实需要在各个活动中保持活跃,那么您可以考虑在指定的活动中使用 Service 而不是计时器。
答案 2 :(得分:0)
1.更改计时器至CountDownTimer
拨打start()
以开始呼叫cancel()
停止。
如何通知Activity 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();
}
});
}
}