如何从另一个活动中停止活动的计时器

时间:2016-11-03 02:27:28

标签: java android timer timertask

现在我有一个活动,让我们说'活动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”的计时器。

我该怎么做?

3 个答案:

答案 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();
            }
        });
    }
}