新的Acitivity后,CountDownTime会关闭 - 如何解决这个问题?

时间:2016-01-08 18:35:06

标签: android broadcastreceiver sharedpreferences countdowntimer serializable

  1. 我正在编写一个使用CountDownTimer的应用程序。 但我注意到,当它打开并在更改菜单后(当我点击后退按钮时),此计时器停止。
  2. 此外,当我单击一个将我的数据保存到SharedPreferences的按钮时,它会刷新我的活动,但是当我单击一个后退按钮时,它会在我单击保存按钮时返回多次。
  3. ad.1我读过我可以使用BroadcastReceiver或Serializable - 但我不知道在我的代码中如何使用它。 有人可以帮我解决这个问题吗?

    下面,我展示了我的代码:(var PPowtorzenia - 它的变量保存了我关于重复的信息并将其保存到SharedPref中。)

    public class biceps_cw1扩展ActionBarActivity {     public static final String MMY_PREFS_NAME =" MMyPrefsFile&#34 ;;     EditText PPowtorzenia,PPowtorzenia1,PPowtorzenia2,PPowtorzenia00,PPowtorzenia11;     EditText PPowtorzenia22,PPowtorzenia3,PPowtorzenia33;     按钮btnStart,btnStop;     TextView textViewTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_biceps_cw1);
    
        btnStart = (Button) findViewById(R.id.btnStart);
        btnStop = (Button) findViewById(R.id.btnStop);
        textViewTime = (TextView) findViewById(R.id.textViewTime);
    
        textViewTime.setText("00:01:30");
    
        final CounterClass timer = new CounterClass(90000, 1000); //9000 - ilosc milisekund(1m30s)
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timer.start();
            }
        });
    
        btnStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timer.cancel();
            }
        });
    
        PPowtorzenia = (EditText) findViewById(R.id.mmessage);
        PPowtorzenia00 = (EditText) findViewById(R.id.mmessage00);
        PPowtorzenia1 = (EditText) findViewById(R.id.mmessage1);
        PPowtorzenia2 = (EditText) findViewById(R.id.mmessage2);
        PPowtorzenia3 = (EditText) findViewById(R.id.mmessage3);
        PPowtorzenia11 = (EditText) findViewById(R.id.mmessage11);
        PPowtorzenia22 = (EditText) findViewById(R.id.mmessage22);
        PPowtorzenia33 = (EditText) findViewById(R.id.mmessage33);
    
    
    
        SharedPreferences ssharedPreferences = getApplication().getSharedPreferences(MMY_PREFS_NAME, MODE_PRIVATE);
        SharedPreferences ssharedPreferences1 = getApplication().getSharedPreferences(MMY_PREFS_NAME, MODE_PRIVATE);
        SharedPreferences ssharedPreferences00 = getApplication().getSharedPreferences(MMY_PREFS_NAME, MODE_PRIVATE);
        SharedPreferences ssharedPreferences11 = getApplication().getSharedPreferences(MMY_PREFS_NAME, MODE_PRIVATE);
        //  SharedPreferences sharedPreferences2 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        //  SharedPreferences sharedPreferences3 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        //  SharedPreferences sharedPreferences22 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        //  SharedPreferences sharedPreferences33 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
    
        String nnumberValue = ssharedPreferences.getString("nnumberValue", "");
        String nnumberValue1 = ssharedPreferences1.getString("nnumberValue1", "");
        String nnumberValue00 = ssharedPreferences00.getString("nnumberValue00", "");
        String nnumberValue11 = ssharedPreferences11.getString("nnumberValue11", "");
        String nnumberValue2 = ssharedPreferences11.getString("nnumberValue2", "");
        String nnumberValue3 = ssharedPreferences11.getString("nnumberValue3", "");
        String nnumberValue22 = ssharedPreferences11.getString("nnumberValue22", "");
        String nnumberValue33 = ssharedPreferences11.getString("nnumberValue33", "");
    
        PPowtorzenia.setText( nnumberValue );
        PPowtorzenia1.setText( nnumberValue1 );
        PPowtorzenia00.setText( nnumberValue00 );
        PPowtorzenia11.setText( nnumberValue11 );
        PPowtorzenia2.setText( nnumberValue2 );
        PPowtorzenia3.setText( nnumberValue3 );
        PPowtorzenia22.setText( nnumberValue22 );
        PPowtorzenia33.setText( nnumberValue33 );
    
    
    
    }
    
    public class CounterClass extends CountDownTimer {
    
        public CounterClass(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }
    
        @Override
        public void onTick(long millisUntilFinished) {
            long millis = millisUntilFinished;
            String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
                    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            System.out.println(hms);
            textViewTime.setText(hms);
    
        }
    
        @Override
        public void onFinish() {
            textViewTime.setText("Completed.");
        }
    }
    
    public void ssaveButton(View view) {
        Intent b = new Intent(this,biceps_cw1.class);
        String uuserNumber = PPowtorzenia.getText().toString();
        String uuserNumber1 = PPowtorzenia1.getText().toString();
        String uuserNumber00 = PPowtorzenia00.getText().toString();
        String uuserNumber11 = PPowtorzenia11.getText().toString();
        String uuserNumber2 = PPowtorzenia2.getText().toString();
        String uuserNumber3 = PPowtorzenia3.getText().toString();
        String uuserNumber22 = PPowtorzenia22.getText().toString();
        String uuserNumber33 = PPowtorzenia33.getText().toString();
        b.putExtra("PPowtorzenia",uuserNumber);
        b.putExtra("PPowtorzenia1",uuserNumber1);
        b.putExtra("PPowtorzenia00",uuserNumber00);
        b.putExtra("PPowtorzenia11",uuserNumber11);
        b.putExtra("PPowtorzenia2",uuserNumber2);
        b.putExtra("PPowtorzenia22",uuserNumber22);
        b.putExtra("PPowtorzenia3",uuserNumber3);
        b.putExtra("PPowtorzenia33",uuserNumber33);
    
        if(uuserNumber.equals("")){
            Toast.makeText(this,"Please enter a number of your series", Toast.LENGTH_SHORT).show();
            return;
        }
        SharedPreferences ssharedPreferences = getApplication().getSharedPreferences(MMY_PREFS_NAME, MODE_PRIVATE);
        //  SharedPreferences sharedPreferences1 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        //  SharedPreferences sharedPreferences00 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        //  SharedPreferences sharedPreferences11 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        // SharedPreferences sharedPreferences2 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        //SharedPreferences sharedPreferences22 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        //SharedPreferences sharedPreferences3 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        // SharedPreferences sharedPreferences33 = getApplication().getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
        SharedPreferences.Editor editorb = ssharedPreferences.edit();
    
        editorb.putString("nnumberValue", PPowtorzenia.getText().toString());
        editorb.putString("nnumberValue1", PPowtorzenia1.getText().toString());
        editorb.putString("nnumberValue00", PPowtorzenia00.getText().toString());
        editorb.putString("nnumberValue11", PPowtorzenia11.getText().toString());
        editorb.putString("nnumberValue22", PPowtorzenia22.getText().toString());
        editorb.putString("nnumberValue33", PPowtorzenia33.getText().toString());
        editorb.putString("nnumberValue2", PPowtorzenia2.getText().toString());
        editorb.putString("nnumberValue3", PPowtorzenia3.getText().toString());
        editorb.commit();
    
        startActivity(b);
    }
    

    }

1 个答案:

答案 0 :(得分:0)

不太确定你的目的。 你的意思是你想让倒数计时器保持活着,无论活动是否在UI上显示? 如果是这样,建议不要将计时器保持在活动状态。更好的方法是在后台组件中实现它,例如服务或线程。这样,计时器与活动生命周期无关。活动的工作只是为了显示结果。