У меня есть хронометр в Mainactivity.java
Я хотел сохранить время запуска, используя SharedPreferences
, и получить время начала, чтобы показать его в другом упражнении, но я не могу понять, как это сделать. Я пытался Service
который позволяет работать в фоновом режиме, но завершился неудачно, так как не может передать переменную другому действию, и люди, предложившие SharedPreferences
, будут проще. Так кто-нибудь знает, как сэкономить время начала и получить значение в другой деятельности? Вот код:
MainActivity.java
public class MainActivity extends AppCompatActivity{
private Chronometer chronometer;
protected FirebaseAuth firebaseauth = FirebaseAuth.getInstance();
@Override
protected void onStart(){
super.onStart();
chronometer.setBase(SystemClock.elapsedRealtime());
final long startTime = (SystemClock.elapsedRealtime() - chronometer.getBase());
final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
final SharedPreferences.Editor editor = pref.edit();
@Override
public void onDataChange (DataSnapshot dataSnapshot){
String status = dataSnapshot.getValue(String.class);
if (status.equals ("occupied")) {
chronometer.start();
editor.putLong("time",startTime);
editor.commit();
}
else
mValueView1.setBackgroundColor(Color.parseColor("#66d983"));
}
@Override
public void onCancelled (DatabaseError databaseError){
}
});
SecondActivity.java
@Override
protected void onStart() {
super.onStart();
final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
mChildReference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String status = dataSnapshot.getValue(String.class);
// firebase status is occupied start chronometer
if(status.equals("occupied")) {
savedTime = pref.getLong("time",01);
chronometer.setBase(savedTime);
chronometer.getBase();
chronometer.setVisibility(View.VISIBLE);
}
if(!status.equals("occupied")){
chronometer.setBase(SystemClock.elapsedRealtime());
pauseOffset = 0;
chronometer.stop();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}