Как мне сохранить мой Countdowntimer, даже если моя деятельность разрушена - PullRequest
0 голосов
/ 20 октября 2018

Итак, я знаю, что мне нужно использовать службу, и поэтому я создал класс под названием «открытый класс BroadcastService extends Service», но я не уверен, как реализовать методы, и поэтому я вроде как потерян.

Этоэто Countdowntimer в моей MainActivity, который уничтожается при уничтожении активности:

 private void startCountDown() { // is called via a button
    try {
        countdownElapsed = 0l;
        next_button.setEnabled(false);
        displayCountDown();
        mCountDownHandler.postDelayed(mCountDownRunnable, COUNT_DOWN_TICKS);
    } catch (Exception ex) {
        Log.e(TAG, ex.getMessage());
    }
}

private void displayCountDown() {
    long t = (COUNT_DOWN_FINISH - countdownElapsed) / 1000;
    String myTime = String.valueOf(t);
    timer.setText(myTime);
    if (countdownElapsed >= COUNT_DOWN_FINISH)
        timer.setText("Countdown");
}


private Runnable mCountDownRunnable = new Runnable() {
    @Override
    public void run() {
        countdownElapsed = countdownElapsed + COUNT_DOWN_TICKS;

        if (countdownElapsed >= COUNT_DOWN_FINISH) {
            releaseCountDownHandler();
            next_button.setEnabled(true);
        } else {

            mCountDownHandler.postDelayed(mCountDownRunnable, COUNT_DOWN_TICKS);
        }
        long secFull = countdownElapsed % 1000;

        if (secFull == 0) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    displayCountDown();
                }
            });
        }
    }

    private void releaseCountDownHandler() {
        try {
            if (mCountDownRunnable != null) {
                mCountDownHandler.removeCallbacks(mCountDownRunnable);
            }
        } catch (Exception ex) {
            Log.e(TAG, ex.getMessage());

        }
    }
};

Я также создал startService в моей основной деятельности уже так и назвал его в моей кнопке:

 public void startService() {
    Intent intent = new Intent(this, BroadcastService.class);
    startService(intent);
}

Мой класс broadcastservice выглядит следующим образом:

 public class BroadcastService extends Service {


@Override
public void onCreate() {
    // The service is being created
    super.onCreate();
    }

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // The service is starting, due to a call to startService()
    return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy() {
    // The service is no longer used and is being destroyed
}

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}

}

Я думаю, что это все методы, которые мне нужны для того, что я хочу сделать, но я не знаю следующий шаг, где и что делатьнапишите, в каком методе .. Я знаю, что вопрос задавался ранее, но я не мог продвинуться дальше с ответами ..

...