{"id":426,"date":"2013-09-20T11:15:49","date_gmt":"2013-09-20T10:15:49","guid":{"rendered":"http:\/\/karstieltopia.com\/?p=426"},"modified":"2016-02-25T14:16:40","modified_gmt":"2016-02-25T13:16:40","slug":"programando-con-multihilos-usando-asynctask-en-android","status":"publish","type":"post","link":"http:\/\/karstieltopia.com\/programacion\/java\/programando-con-multihilos-usando-asynctask-en-android\/","title":{"rendered":"Programando con multihilos usando AsyncTask en Android"},"content":{"rendered":"
Si hab\u00e9is estado programando para Android desde tiempos inmemoriales (al menos hasta el 2.x), estar\u00edais acostumbrados a utilizar Threads de la forma usual de Java.<\/p>\n
Pero si ese c\u00f3digo lo compil\u00e1is para alguna versi\u00f3n >=3.0, ver\u00e9is que rompe en tiempo de ejecuci\u00f3n con alg\u00fan mensaje cr\u00edptico y, la raz\u00f3n de ello, es que se decidi\u00f3 que todo hilo deber\u00eda hacerse utilizando un sistema diferente: AsyncTask<\/strong><\/p>\n Utilizar esta clase en nuestros proyectos es muy f\u00e1cil y no necesitaremos hacer ning\u00fan tipo de invocaci\u00f3n esot\u00e9rica.<\/p>\n\r\n\r\nprivate class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {\r\n protected Long doInBackground(URL... urls) {\r\n int count = urls.length;\r\n long totalSize = 0;\r\n for (int i = 0; i < count; i++) {\r\n totalSize += Downloader.downloadFile(urls[i]);\r\n publishProgress((int) ((i \/ (float) count) * 100));\r\n \/\/ Escape early if cancel() is called\r\n if (isCancelled()) break;\r\n }\r\n return totalSize;\r\n }\r\n\r\nprotected void onProgressUpdate(Integer... progress) {\r\n setProgressPercent(progress[0]);\r\n }\r\n\r\nprotected void onPostExecute(Long result) {\r\n showDialog("Downloaded " + result + " bytes");\r\n }\r\n}\r\n\r\n<\/pre>\n