Android Studio计时器通过不同的活动时间

时间:2016-07-06 20:33:51

标签: java android-studio android-intent chronometer

我正在努力让计时器在不同的活动中保持时间。我在每个活动底部的片段中都有计时器。所以基本上一旦它从MainActivity切换到Corsi,我希望时钟是相同的。

MainActivity

public class MainActivity extends AppCompatActivity implements hold_undo_fragment.toggleButtonListener{

    Chronometer chronometer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //runBeaconDistances();
        chronometer = (Chronometer) findViewById(R.id.clock);
        chronometer.setBase(SystemClock.elapsedRealtime());
        chronometer.start();
    }

    public void toCorsi(View view){
        Intent myIntent = new Intent(MainActivity.this.getBaseContext(), corsi.class);
        myIntent.putExtra("time", chronometer.getBase() - SystemClock.elapsedRealtime()); // or thisSystemClock.elapsedRealtime() - chronometer.getBase() but neither works
        startActivity(myIntent);

    }
}

Corsi活动

public class corsi extends AppCompatActivity implements hold_undo_fragment.toggleButtonListener {

    Chronometer chronometer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_corsi);
        Bundle timeData = getIntent().getExtras();
        if (timeData == null)
            return;;
        long millis = timeData.getLong("time");

        chronometer = (Chronometer) findViewById(R.id.clock);
        chronometer.setBase(millis);
        chronometer.start();
    }
}

然后发生的事情是,一旦我进入主要活动,时钟从00:00开始并开始计时(就像它应该的那样)。但是一旦我切换到Corsi,就会得到系统时间(27:00:..)这不是我想做的事情。请帮忙,谢谢。

1 个答案:

答案 0 :(得分:1)

您应该为此任务启动服务。订阅/取消订阅带有回调的活动的更新