Как я уже упоминал в своем комментарии, сохранение статической ссылки на View
- очень плохая идея. Во-первых, как выяснили другие ответы, нет никакой гарантии, что ваш View
будет инициализирован при вызове, поскольку Activity
, частью которого он является, еще не инициализирован. Тем не менее, это также является основной причиной утечек памяти (см. этот ответ для более подробной информации ).
Я бы порекомендовал вместо того, чтобы начать Chronometer
, вместо этого запишитераз вы хотите запустить его (что, в случае Chronometer
, можно получить, вызвав SystemClock#uptimeMillis
), записав его в Intent
и используя его для запуска второго Activity
. Затем вы можете использовать это время в качестве базового времени для вашего Chronometer
и, следовательно, создать впечатление, что оно работает все время. Т.е.
public class ActivityOne extends Activity {
//...
private void startChronometer() {
final Intent i = new Intent(this, ActivityTwo.class);
i.putExtra("time", SystemClock.uptimeMillis());
startActivity(i);
}
}
public class ActivityTwo extends Activity {
private Chronometer chrono;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
//...
chrono = findViewById(R.id.id_of_chronometer);
chrono.setBase(getIntent().getLongExtra("time", SystemClock.uptimeMillis()));
chrono.start();
}
}