[英]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.