У меня есть фрагмент, который начинает отсчет и изменяет статус значка. После открытия приложения появляется счетчик - 00:00 и кнопка с надписью START.
После нажатия кнопки START отсчет начинается и кнопка меняется на STOP.
После нажатия кнопки STOP отсчет останавливается, и кнопка изменяется на START. Довольно просто c.
Дело в том, что после нажатия кнопки «СТАРТ» и минимизации приложения и его открытия обратно (перевод приложения в фоновый режим и обратно) счетчик и кнопка всегда возвращаются к СТАРТУ и 00:00.
Итак, вопрос: Как сохранить фрагмент живым после минимизации приложения?
Код:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View recordView = inflater.inflate(R.layout.fragment_record, container, false);
ButterKnife.bind(this, recordView);
return recordView;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
btnPause.setVisibility(View.GONE);
recordBtn.setColorPressed(getResources().getColor(R.color.colorPrimary));
}
@OnClick(R.id.btnRecord)
public void recordAudio(){
onRecord(mStartRecording);
mStartRecording = !mStartRecording;
}
private void onRecord(boolean start) {
Intent intent = new Intent(getActivity(), RecordingService.class);
if(start){
recordBtn.setImageResource(R.drawable.ic_media_stop);
//Toast.makeText(getContext(), "Started recording", Toast.LENGTH_LONG).show();
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.start();
getActivity().startService(intent);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
recordingStatusTxt.setText("Recording now...");
} else {
recordBtn.setImageResource(R.drawable.ic_mic_white);
chronometer.stop();
chronometer.setBase(SystemClock.elapsedRealtime());
timeWhenPaused = 0;
getActivity().stopService(intent);
recordingStatusTxt.setText("Click the button to start recording");
}
}