Progress bar - generowanie błędnego czasu

0

Cześć mam pewien problem otóż gdy dodaje podaną kartę od swoje aplikacji i gdy karta zostaje założona przechodzę do jej szczegóły. Tam jest czas za który ma się generować nowa karta. Wszystko działa prawidło ale jak generuje nową kartę i przechodzę do jej szczegółu czas wygenerowania nowej karty nie jest od tego czasu co jest ustalone tylko od jakiegoś momentu. Przykładowo ustanolony jest czas do generowania nowej karty 30 a zaczyna się od 15. Wygląda na to,że przejmuje czas tej pierwszej karty. Nie wiem dlaczego tak się dzieje.

public class CardDetailsActivity extends AppCompatActivity {

    MySharepreference mysharepreference;
    private String cardNameEncrypt, intervalTotpEncrypt, path3Encrypt, otpEncrypt;
    private ProgressBar progressBar;
    private TextView secondTimeTextView;
    private int interval;
    protected String  intervalTotpDecrypt;
    private ImageView myImageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_card_details);

        TextView titleTextView = (TextView) findViewById(R.id.toolbar_title);
        titleTextView.setText(cardNameDecrypt);

        TextView dotTextView = (TextView) findViewById(R.id.dotTextView);
        subtitleTextView.setTypeface(custom_fonts);
        second_text.setTypeface(custom_fonts);
        setSupportActionBar(toolbar);

        progressBar = (ProgressBar) findViewById(R.id.refershProgrss);
        myImageView = (ImageView) findViewById(R.id.qrCodeImageView);
        mysharepreference = new MySharepreference();

        Bundle extras = getIntent().getExtras();
        intervalTotpEncrypt = extras.getString("intervalTotp");
        keyString = mysharepreference.getKeyString(CardDetailsActivity.this);
        Typeface custom_fonts = Typeface.createFromAsset(getAssets(), "fonts/OpenSans-Regular.ttf");
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        toolbar.setNavigationIcon(R.drawable.ic_arrow_back);
        
        try {
            intervalTotpDecrypt = AesCrypt.decrypt(keyString, intervalTotpEncrypt);
        } catch (GeneralSecurityException e) {
            e.printStackTrace();
        }


        interval = Integer.parseInt(intervalTotpDecrypt);

        LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
                new IntentFilter(ProgressBarService.DOWNLOAD_ACTION));

        Intent intent = new Intent(this, ProgressBarService.class);
        intent.putExtra("interval", interval);
        startService(intent);

        progressBar.setMax(interval);
        progressBar.setProgress(interval);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        finish();
    }

    private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent != null) {
                int progress = intent.getIntExtra(ProgressBarService.PERCENTAGE_STAMP, 0);
                progressBar.setProgress(progress);
                secondTimeTextView.setText(" " + progress + " ");
            }
        }
    };
}

Progress bar

public class ProgressBarService extends Service {

private int interval;
private Intent intent;
private LocalBroadcastManager broadcastManager;
public final static String PERCENTAGE_STAMP = "percent";
public final static String DOWNLOAD_ACTION = "com.magdad.apk.download";

public ProgressBarService() {
}


@Override
public void onCreate() {
    super.onCreate();
    broadcastManager = LocalBroadcastManager.getInstance(this);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    if (intent != null) {
        interval = intent.getIntExtra("interval", 0);
    }

    new UpdateProgressBar().execute();
    return START_STICKY;

}

@Override
public IBinder onBind(Intent intent) {
    // TODO: Return the communication channel to the service.
    throw new UnsupportedOperationException("Not yet implemented");
}

private class UpdateProgressBar extends AsyncTask<Void, Integer, Integer> {

    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
        intent = new Intent(DOWNLOAD_ACTION);
        intent.putExtra(PERCENTAGE_STAMP, values[0]);
        broadcastManager.sendBroadcast(intent);
    }

    @Override
    protected Integer doInBackground(Void... params) {
        for (int i = interval; i >= 0; i--) {
            publishProgress(i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        return null;
    }

    @Override
    protected void onPostExecute(Integer integer) {
        super.onPostExecute(integer);
        new UpdateProgressBar().execute();
    }
}

}

0

Z tego co rozumiem pobierasz jakąś wartość

keyString = mysharepreference.getKeyString(CardDetailsActivity.this);

ale za każdym razem jest to taka sama wartość. Musisz jakoś ponumerować swoje karty i odczytywać wartości osobno dla każdej z nich.

1 użytkowników online, w tym zalogowanych: 0, gości: 1