0
私の活動でボタンをクリックするとservice
が起動し、一時停止し、Chronometer
を再開するという機能が私のアプリで開発されます。 しかし、私は自分のバックグラウンドでどのように開始し、停止するのに問題がありますservice
。クロノメーターがバックグラウンドで過ごす
私は私の活動
public class StartWorkActivity extends ActivityGeneralToolbar {
protected final void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState, R.layout.activity_start_work);
Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);
}
@Override
protected void onStop() {
super.onStop();
}
public void startWork(View v){
Intent msgIntent = new Intent(StartWorkActivity.this, WorkTimerService.class);
msgIntent.setAction("START_TIMER");
getBaseContext().startService(msgIntent);
}
public void pauseWork(View v){
Intent msgIntent = new Intent(StartWorkActivity.this, WorkTimerService.class);
msgIntent.setAction("PAUSE_TIMER");
}
public void resumeWork(View v){
//call service
Intent msgIntent = new Intent(StartWorkActivity.this, WorkTimerService.class);
msgIntent.setAction("RESUME_TIMER");
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
}
そして、私のWorkTimerService
public class WorkTimerService extends IntentService {
long timeWhenStopped = 0;
Chronometer chronometer;
public WorkTimerService() {
super("SystemService");
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
protected void onHandleIntent(Intent intent) {
if(intent.getAction() == "START_TIMER"){
startWork();
}
if(intent.getAction() == "PAUSE_TIMER"){
pauseWork();
}if(intent.getAction() == "RESUME_TIMER"){
resumeWork();
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags,startId);
return START_STICKY;
}
public void pauseWork(){
timeWhenStopped = chronometer.getBase() - SystemClock.elapsedRealtime();
chronometer.stop();
}
public void resumeWork(){
chronometer.setBase(SystemClock.elapsedRealtime() + timeWhenStopped);
timeWhenStopped = 0;
chronometer.start();
}
public void startWork(){
chronometer.start();
}
}
を作成した。しかし、私の問題は、私はそれができない読んのでChronometer
は明らかに、私のサービスでヌルであるということですサービスでは、ユーザーと対話します。 それで、バックグラウンドでChronometer
をどうやって送ることができますか?
はあなたに感謝し、私が見たとき、私は戻ってきます! – LorenzoBerti
私は読んで問題を解決しましたが、私の質問は今では... バックグラウンドで毎秒TimerTaskを作成するには高価ではありませんか? – LorenzoBerti
'TimerTask'を何度も作成しないでください。 'TimerTask'も一度作成し、' Timer'を使って固定レートでスケジュールします。 –