Android CountDownTime在新活动结束后关闭-如何修复此问题? 我正在写一个使用倒计时的应用程序。 但我注意到,当它打开时,在更改菜单后(当我单击“后退”按钮时),计时器停止 此外,当我单击将数据保存到SharedReferences的按钮时,它会刷新我的活动,但当我单击“上一步”按钮时,它返回的次数与我单击“保存”按钮的次数相同

Android CountDownTime在新活动结束后关闭-如何修复此问题? 我正在写一个使用倒计时的应用程序。 但我注意到,当它打开时,在更改菜单后(当我单击“后退”按钮时),计时器停止 此外,当我单击将数据保存到SharedReferences的按钮时,它会刷新我的活动,但当我单击“上一步”按钮时,它返回的次数与我单击“保存”按钮的次数相同,android,broadcastreceiver,sharedpreferences,countdowntimer,serializable,Android,Broadcastreceiver,Sharedpreferences,Countdowntimer,Serializable,ad.1我读到我可以使用BroadcastReceiver或Serializable,但我不知道如何在我的代码中使用它。 有人能帮我解决这个问题吗 下面,我展示了我的代码:(var PPowtorzenia-它是一个变量,用于保存我关于重复的信息并将其保存到SharedRef中。) 公共类二头肌cw1扩展了ActionBarActivity{ 公共静态最终字符串MMY\u PREFS\u NAME=“MMyPrefsFile”; 编辑文本PPowtorzenia、PPowtorzenia1、PP

ad.1我读到我可以使用BroadcastReceiver或Serializable,但我不知道如何在我的代码中使用它。 有人能帮我解决这个问题吗

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

公共类二头肌cw1扩展了ActionBarActivity{ 公共静态最终字符串MMY\u PREFS\u NAME=“MMyPrefsFile”; 编辑文本PPowtorzenia、PPowtorzenia1、PPowtorzenia2、PPowtorzenia00、PPowtorzenia11; 编辑文本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);
}

}不太清楚你的目的。 您的意思是,无论活动是否显示在UI上,都要保持倒计时计时器处于活动状态吗?
如果是这样,建议不要让计时器处于活动状态。更好的方法是在后台组件(如服务或线程)中实现。这样,计时器与活动生命周期无关。活动的工作只是显示结果。

感谢您的回复。我的职责是无论我在手机里做什么,都要让一个顾问保持活跃。这意味着当我点击开始(计时器)并通过后退按钮返回到另一个窗口(我的应用程序中的活动)时,当我返回到有倒计时的活动时,它停止工作。总是当我回去再回来时,它是一个停机计时器的重置。我试着解释一下,但我不知道你是否理解这一点。我有很多活动都使用倒计时。你们认为一个更好的方法是为所有活动创建一个倒计时器,我可以在后台组件中使用它吗?