조각은 네트워크에서 n 초마다 데이터를 새로 고쳐야합니다. 조각이 일시 중지되면 그 작업을 중단해야합니다. 또한 이후에 네트워크 데이터가 에 도달하면 조각이 일시 중지되므로 무시해야합니다. 지금반복되는 AsyncTask를 구현하는 라이프 사이클 인식 방법은 무엇입니까?
, AsyncTask를하고 응답 다시 처리기에 AsyncTask를 게시물을 작성하는 핸들러의 sendMessageDelayed 매 n 초를 사용하여 메신저. 그런 다음 Handler가 UI를 업데이트합니다.
그러나 조각이 일시 중지되거나 활동이 완료되면 메모리 누수가 발생합니다. 또한
의 조각은 NPE에게 줄 것이다 UI를 업데이트, 더 이상 활성화
아래의 코드는 꽤 순진 및 메모리 가득이 그것을 할 수있는 한 가지 방법은
class MyFragment : Fragment() {
override fun onPause() {
super.onPause()
handler.removeMessages(Consts.FETCH_DATA) //stop refreshing when paused
}
override fun onResume() {
super.onResume()
val msg = handler.obtainMessage(Consts.FETCH_DATA)
handler.sendMessageDelayed(msg, 60*1000) //start refreshing again
}
val handler = MyHandler()
inner class MyHandler: Handler(){
override fun handleMessage(m: Message) {
val pair = m.obj as Pair<String, Any>
val command = pair.first
val data = pair.second
when(m.what){
Consts.POPULATE_DATA -> {
//findViewById and put data
//schedule the next refresh
val msg = obtainMessage(Consts.FETCH_DATA)
sendMessageDelayed(msg, 60*1000)
}
Consts.FETCH_DATA -> {
MyAsyncTask(this).execute()
//this sends Consts.POPULATE_DATA to this handler
//after a network request
}
}
}
}
}
당신은 AsyncTask –
대신 @ AsunTaskLoader를 사용해야한다고 생각합니다. @sunilkushwah AsyncTaskLoader. 나는 그것이 그랬다고 생각한다. 내가 핸들러 제거 경우의 데이터, 매 n 초, 다시로드 비 지저분한 방법은? – arnab321
핸들러는 것도 좋은 방법입니다하지만 u는 변경하려는 경우 당신은 안드로이드에 타이머를 사용할 수 있지만 –