Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- VisualStudio
- 인증문제해결
- react-native
- 디버깅
- 빌드 오류
- 안드로이드
- 안드로이드 스튜디오
- gradle
- Git
- 개발환경설정
- 리액트
- AWS
- not working
- bitbucket
- react
- aPK
- Invalid credentials
- sourcetree
- 안됨
- git인증
- 설정
- 뒤로가기 안됨
- 리액트 네이티브
- flutter
- Kotlin
- WPF
- 예제
- Android
- EC2
- 데이터바인딩
Archives
- Today
- Total
물에 살고싶은 개발자
Asynctask 간과하지 말아야 할것 본문
Cannot execute task: the task has already been executed
라는 오류메시지를 내놓을 때가 있다
이거슨 Asynctask는 단 한번만 execute 할수 있기때문에 생기는 익셉션이다.
해결책은 내가아는선에선 매번 execute할때마다 새롭게 인스턴스화할수밖에 없다
execute하기전에 항상 새로 인스턴스화해주자
그리고 종료를 시켜줄때는 cancel()를 쓰면 된다.
하.지.만 중요한건 cancel()만 한다그래서 스레드가 자동으로 종료되진 않더라..
그래서 doInBackground() 내부에서 캔슬됏는지 여부를 확인한 후에 수동으로 종료시켜줘야한다
if(this.isCancelled()){
return null;
}
이런식으로 종료시켜주면 된다.
(물론 그 이전에 아래처럼 post에서 cancel()해줘야 제대로 종료되겠지?)
protected void onPostExecute(Integer integer) {
cancel(true); }
끝
Comments