繁体   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