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
분명 내 서비스의 null이다 서비스에서 ui와 상호 작용합니다. 그럼 배경으로 Chronometer
을 보내거나 함께 작업 할 수 있습니까?
당신을 감사하고 내가 볼 때 나는 돌아와! – LorenzoBerti
그래, 내가 읽고, 내 문제를 해결하지만, 내 질문은 지금 ... 백그라운드에서 초마다 TimerTask을 만드는 것은 너무 비싸지 않습니까? – LorenzoBerti
'TimerTask'를 반복해서 만들지 않도록하십시오. 'TimerTask'도 한 번 만들고 'Timer'를 사용하여 일정 비율로 일정을 잡으십시오. –