사용자가 CheckBox
을 확인하고 TimePickerDialog
에 시간을 설정하고 시간이 오기 시작하면 BroadcastReceiver
을 통해 서비스가 시작되고 6 초마다 음악이 재생됩니다. 덕분에이 앱은 Service
이지만 음악을 재생할 때마다 6 초마다 계속 재생됩니다. 마찬가지로 CheckBox의 상태를 저장하기 위해 다른 서비스를 만들었습니다. 시간이 지나도 사용자가 닫히고 응용 프로그램이 열리면 CheckBox가 여전히 체크인되어야합니다. 확인란의 상태를 관리하기 위해 전역 변수를 만들었 기 때문에서비스 질문
main.java는 :
Intent intentA = new Intent(main.this, AlarmReceiverA.class);
PendingIntent pendingIntentA = PendingIntent.getBroadcast(main.this, 0,
intentA, PendingIntent.FLAG_ONE_SHOT);
alarmManagerA = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar now = Calendar.getInstance();
alarmManager.set(AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), pendingIntentA);
Toast.makeText(main.this, "Present time: " +
String.valueOf(now.getTime()), Toast.LENGTH_SHORT).show();
이 쉽게 AlarmReceiver
시작 서비스입니다 :
public final class AlarmReceiverA extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "AlarmA worked.", Toast.LENGTH_LONG).show();
context.startService(new Intent(context, MyServiceA.class));
}
}
그리고 이것은 MyServiceA.class입니다 :
@Override
public void onCreate() {
Toast.makeText(this, "My ServiceA Created", Toast.LENGTH_LONG).show();
Log.d(TAG, "onCreate");
GlobalVars.setTimeWatch(1);
}
@Override
public void onDestroy() {
Toast.makeText(this, "My ServiceA Stopped", Toast.LENGTH_LONG).show();
Log.d(TAG, "onDestroy");
}
@Override
public void onStart(Intent intent, int startid) {
Toast.makeText(this, "My ServiceA Started", Toast.LENGTH_LONG).show();
Log.d(TAG, "onStart");
GlobalVars.setTimeWatch(1);
}
"My ServiceA Started"토스트 메시지가 표시되므로 지금까지 작동되었습니다. 변수를 1로 설정하더라도 문제가 발생합니다. GlobalVars.setTimeWatch(1)
앱을 다시 시작하면 다시 표시되지 않습니다. main.java에서
나는이 변수의 값을 검사하고 있습니다 :
public void onResume() {
super.onResume();
Toast.makeText(main.this, String.valueOf(GlobalVars.getTimeWatch()),
Toast.LENGTH_SHORT).show();
}
을하지만 점점 오전 모든 나는 새 화면을 열 때 (클릭으로 예 때문에 0 문제는, 서비스에 있어야합니다 버튼을 누른 다음 돌아가서, 나는 "1"의 값으로 토스트 메시지를 얻는다.
- CheckBox의 상태를 저장하는 방법입니까?
- 코드에 어떤 문제가 있습니까?
나는이 함께 노력하고 있습니다 :
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putBoolean("MyBoolean", cbstate);
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
myb = savedInstanceState.getBoolean("MyBoolean");
}
cbstate이 부울 변수입니다. 난 항상 "확인되지 않음"얻을 응용 프로그램을 다시 시작한 후
if (myb == true)
{
cb1.setChecked(true);
Toast.makeText(main.this, "checked", Toast.LENGTH_SHORT).show();
}
else
{
cb1.setChecked(false);
Toast.makeText(main.this, "Not checked", Toast.LENGTH_SHORT).show();
}
다음에서 onCreate 방법은 내가 cbstate의 값을 검사하고있다.