В Android Progress сбрасывает его значение, когда приложение находится в фоновом режиме - PullRequest
1 голос
/ 18 июня 2019

У меня есть счетчик с круглым индикатором выполнения. Когда счетчик запускается, индикатор выполнения также начинается со значения счетчика, но когда он работает в фоновом режиме и снова открывает приложение ... круговой индикатор выполнения начинается с 0, но счетчик работает правильно по значению. В этом случае мне нужно чтобы индикатор выполнения не начинался с 0.

вот мой код:

public class MainActivity extends AppCompatActivity {
    public int counter;
    Button button;
    public boolean isrunningtime = false;
    TextView textView;
    private ProgressBar progressBar;
    long millisUntilFinished = 0;
    SharedPreferences sharedPreferences;
    SharedPreferences.Editor editor;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.textView);
        sharedPreferences = getSharedPreferences("my", MODE_PRIVATE);
        editor = sharedPreferences.edit();
        progressBar = findViewById(R.id.progressBar);
        startService(new Intent(this, BroadcastService.class));
        Log.i("Tag", "Started service");
    }

    private BroadcastReceiver br = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            updateGUI(intent); // or whatever method used to update your GUI fields
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        registerReceiver(br, new IntentFilter(BroadcastService.COUNTDOWN_BR));

        Log.i("Tag", "Registered broacast receiver");
    }

    @Override
    public void onPause() {
        super.onPause();
        unregisterReceiver(br);


    }

    @Override
    public void onStop() {
        try {
            unregisterReceiver(br);
        } catch (Exception e) {
            // Receiver was probably already stopped in onPause()
        }
        super.onStop();
    }

    @Override
    public void onDestroy() {
        stopService(new Intent(this, BroadcastService.class));
        Log.i("Tag", "Stopped service");
        super.onDestroy();
    }

    private void updateGUI(Intent intent) {
        if (intent.getExtras() != null) {
            millisUntilFinished = intent.getLongExtra("countdown", 0);
            Log.i("Tag", "Countdown seconds remaining: " + millisUntilFinished / 1000);

                progressBar.setProgress((int) (millisUntilFinished / 1000));

            Log.i("progress", "" + (int) (millisUntilFinished / 1000));
            textView.setText("" + millisUntilFinished / 1000);
        }

    }


}

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Удалить unregisterReceiver(br); из onStop () и onPause (), и переместить registerReceiver(br, new IntentFilter(BroadcastService.COUNTDOWN_BR)); из onResume () в onCreate ()

0 голосов
/ 18 июня 2019

ставьте unregisterReceiver(br) только в onDestroy() вместо onStop() и onPause()

...