簡體   English   中英

如何停止另一個活動的活動計時器

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM