2017-03-01 3 views
0

Asynctask를 사용하여 백그라운드에서 소켓과 메신저를 계속 사용하고 있습니다.Android 스튜디오 AsyncTask

나는 publishProgress()onProgressUpdate()이 데이터를 보내고 나는 기능 onProgressUpdate()에서 데이터를 얻거나 내가이 데이터가 다른 클래스에 사용해야하는 경우 때문에, 다른 클래스로 보낼 수있는 방법이 있는지 알고 싶습니다 . 적어도 이것은 가능합니까?

먼저 하나의 내가 소켓 정보를 얻기 위해 배경이 AsyncTask를를 사용하는 클래스입니다 :

은 내가이 개 공개 수업을이 된 .java으로 된 .java을 보유하고 있습니다.

두 번째 공용 클래스에서는 OpenGL을 사용하며이 데이터를 사용해야합니다.

+0

이렇게하면 백 프로세스가 불완전한 시점에이 작업을 수행하려고합니다. 맞습니까? – Pedo

+0

예, OpenGl 클래스에서 publishProgress 데이터 가져 오기 – diego

답변

-1

요는 publishProgress() 방법으로이 작업을 수행 할 수 있습니다 감사 당신은 doInBackground()에서이 메소드를 호출 할 수 있습니다 당신이 당신의 데이터를 얻을 필요가있을 때,이 메소드는 언제라도 호출 할 수 있습니다.

그런 다음 params에서 원하는 데이터를 가져와 Asynctask의 공용 변수에 저장하고 다른 클래스에서 액세스하십시오.

이것은 문제가 될 수 있습니다.

0

물론 가능합니다. doInBackground()onProgressUpdate() 사이에 전달되는 배열의 유형을 정의합니다. 진도를 발표하고 그렇게 할 수 있습니다.

new AsyncTask<...,MyDataObject,...>() {...}.execute(); 

또는, dIB()를 실행하는 스레드 사이에 발행 - 구독 인터페이스를 만들 수 있으며, 어떤 스레드하면 소모된다.

아니요. AsyncTask은 장기 실행 작업을 위해 사용되지 않습니다. 상대적으로 빠른 원샷을 의미합니다. AsyncTask의 다른 모든 인스턴스에 대해 기본적으로 사용되는 하나의 직렬 실행 프로그램을 차단하지 않도록 전용 실행 프로그램에서 태스크를 실행하는 것을 고려해야합니다. 예 :

executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);