Android / Java и addEventListeners - PullRequest
0 голосов
/ 29 июня 2011

У меня есть класс Activity и класс RestClient. Работая с Javascript или ActionScript, я просто определяю прослушиватель событий в RestClient, чтобы основной класс мог вызывать некоторые функции, когда что-то происходит.

Пример Flash:

RestClient c = new RestCient()
c.addEventListener(Event.DATA, dataHandler);

function dataHandler(e:Event)
{
 ... do something
}

Как правильно сделать это в Android? Основным классом является деятельность.

Примеры Android:

public class RestClient extends MyConnector 
{
   public RestClient()
   {
      ...   
   }

   protected var onConnect()
   {
      dispatchEvent CONNECT ???
   }

   protected var onClose()
   {
      dispatchEvent CLOSE ???
   }

   ...
}

public class Main extends Activity
{
   RestClient client;

   @Override
   public void onCreate(Bundle savedInstanceState) 
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      client = new RestClient();
      client.addEventListener(CONNECT, connectHandler); ?????  
   }

   protected void connectHandler(Event e)
   {
      Log.i("Yeah!", "Connected!");
   }
}

Спасибо.

1 Ответ

1 голос
/ 29 июня 2011

AsyncTask может быть ближайшей вещью, к которой вы привыкли для этого типа обработки событий, происходящих из ActionScript. Вы можете создать подкласс AsyncTask, а затем определить его в своей основной деятельности следующим образом:

MyRestTask restTask = new MyRestTask<URL, Integer, Long>() {
 protected Long doInBackground(URL... urls) {
     // instantiate an DefaultHTTPClient and call methods on it here
 }

 protected void onProgressUpdate(Integer... progress) {
     // retrieve progress updates here
 }

 protected void onPostExecute(Long result) {
     // process the response here
 }
}
...