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



现在我有一个活动,让我们说'活动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();
            }
        });
    }
}

最新更新