-2
5 분마다 장치 저장 장치에 "Some text"를 기록해야하는데,이 작업을 수행하는 가장 좋은 방법이 있습니다. 하지만 메인 스레드가 멈추지 않고 로깅 스레드가 항상 살아 있어야합니다. 이 시도 그러나 당신의 긴 작업을 완료하기 위해 같은UI를 동결하지 않고 백그라운드 서비스를 실행하십시오.
public class DataWriteService extends Service {
private FileIOHelper fileHelper= new FileIOHelper("Test.txt");
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//Gets location and writes to a file
fileHelper.writeToFile(this, "Some text");
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
[서비스 용 JavaDocs] (https://developer.android.com/reference/android/app/Service.html) : "서비스는 스레드가 아닙니다."에서 [the 'onStartCommand()'에 대한 JavaDocs] (https://developer.android.com/reference/android/app/Service.html#onStartCommand (android.content.Intent, % 20int, % 20int)) : "시스템 서비스의 메인 스레드에서 이것을 호출합니다 ... 메인 스레드의 이벤트 루프를 멈추지 않도록해야합니다. 장기 실행 작업, 네트워크 호출 또는 과도한 디스크 I/O를 수행 할 때는 새 스레드를 시작해야합니다. " 스레드를 시작하지 않았으므로 작업이 UI를 고정시킵니다. – CommonsWare