現在、取り組んでいたプロジェクトを再開し、ゼロから作り直しています。
ただし、Service クラスを作成すると、何かに気付きました。古いプロジェクトでは、onStartCommand と呼ばれる Service 内のメソッドに、起動する必要があるすべてのコードが含まれていますが、新しいプロジェクトでは、Service クラスを作成すると、このメソッドはどこにも見つかりません。
- サービス コードを含めるには、この「onStartCommand」メソッドを手動で追加する必要がありますか?
- そうでない場合、私のコードはどこに行くのでしょうか? それは私の「古い」プロジェクトのコードにあるようで、public TimerService を完全にコメントブロックし、null を IBinder に渡し、代わりに onStartCommand などを作成します..そして、その理由がよくわかりません。
- 私がここにいる間、誰かが私の CountdownTimer コードを再確認してもらえますか? それが正しければ、スレッドの中に入れるべきですか?
新しいサービス クラスを作成すると、次のようになります。
public class TimerService extends Service {
public TimerService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
}
ただし、私の古いプロジェクトでは、サービス クラスは次のようになります。
public class TimerService extends Service {
/*
public TimerService() {
}
*/
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
intent.getStringExtra("TIMER_VALUE");
String string_timerValue;
string_timerValue = intent.getStringExtra("TIMER_VALUE");
long long_timerValue;
long_timerValue = Long.parseLong(String.valueOf(string_timerValue));
// I DO NOT WANT ANY TICK VALUE, SO GIVE IT FULL TIMER VALUE
long long_tickValue;
long_tickValue = Long.parseLong(String.valueOf(string_timerValue));
new CountDownTimer(long_timerValue, long_tickValue) {
public void onTick(long millisUntilFinished) {
// DO NOTHING
}
public void onFinish() {
Toast.makeText(TimerService.this, "TIMES UP", Toast.LENGTH_LONG).show();
stopService(intent);
}
}.start();
return START_STICKY;
// END OF onStartCommand
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
// END OF ENTIRE SERVICE CLASS
}
ありがとうございました!!