现在我有一个活动,让我们说'活动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"的计时器必须停止。
我该怎么做?
同一时间只能激活一个"Activity"。你的"活动A"可以用一个服务代替。然后你的问题是解决的'活动B'直接调用服务方法停止定时器当按钮被点击
如果你的计时器任务真的需要跨活动活动,也许你应该考虑使用服务而不是在指定的活动中使用计时器
1。将"定时器"更改为"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();
}
});
}
}