当我离开应用程序且时间栏结束时,该应用程序开始新的活动,而我的手机打开了该应用程序

时间:2019-04-18 16:18:38

标签: java android android-activity

我有一个时间栏。当该时间栏结束时,它将启动一个新活动,但是当我离开该应用程序时,该时间栏将继续进行,当结束时,则将启动一个新活动,然后我的手机将再次打开该应用程序。离开应用程式后,我不知道该怎么办。酒吧结束后,Android不会打开它。

cdt = new CountDownTimer(oneMin, 1000) {
    public void onTick(long millisUntilFinished) {
        int total = (int)(((float) millisUntilFinished / (float) oneMin) * 100.0);
        pB.setProgress(total);
    }

    public void onFinish() {
        // DO something when 1 minute is up
        gameOver();
    }
}.start();

private void gameOver() {
    cdt.cancel();
    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
    intent.putExtra("SCORE", punkte);
    startActivity(intent);
}

1 个答案:

答案 0 :(得分:0)

嗯,使用处理程序, 例如,因此此处理程序将每2秒执行一次(根据您的需要进行调整), 当应用关闭时,将触发stop()并删除回调,所有这些都将在Main线程中发生。 我使用了片段样本。

Handler mHandler;

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mInflatedView = inflater.inflate(R.layout.fragment_scan, container, false);
    if (LOG_DEBUG) Log.w(TAG, "onCreateView: ");


    mHandler = new Handler();

    mHandler.post(mRunnable);
    return mInflatedView;

}

private Runnable mRunnable = new Runnable() {
    @Override
    public void run() {
        Log.w(TAG, "run: ");
        /* my set of codes for repeated work */
        mHandler.postDelayed(this, 2000); // reschedule the handler
    }
};

@Override
public void onStop() {
    super.onStop();
    if (mHandler != null) {
        mHandler.removeCallbacks(mRunnable);
        mHandler = null;
    }
}