Use AsyncTask in a service in android
package βcom.emergingandroidtech.Services; import βandroid.app.Service; importβ android.content.Intent; importβ android.os.IBinder; import βandroid.util.Log; importβ android.widget.Toast; importβ java.net.MalformedURLException; importβ java.net.URL; import android.os.AsyncTask; publicβ class βMyService βextendsβ Serviceβ { ββββ@Override ββββpublicβ IBinder βonBind(Intentβ arg0)β { ββββββββreturn βnull; ββββ} ββββ @Override β βββpublicβ int βonStartCommand(Intent βintent,βintβ flags,βint βstartId)β { ββββββββ //βWeβ want βthis βservice βto βcontinue βrunning βuntilβ it βis βexplicitly ββββββββ//βstopped,βsoβ return βsticky. ββββββββ Toast.makeText(this,β"ServiceβStarted",βToast.LENGTH_LONG).show(); ββββββββtry { ββββββββββββnew DoBackgroundTask().execute( βββββββββββββββnew URL("http://www.google.com/somefiles.pdf"), ββββββββββββββββββββnew URL("http://emergingandroidtech.blogspot.in")); ββββββββ } catch (MalformedURLException e) { ββββββββββββe.printStackTrace(); ββββββββ} ββββββββreturn βSTART_STICKY; β βββ} ββββ @Override ββββpublic βvoid βonDestroy() β{ ββββββββsuper.onDestroy(); ββββββββToast.makeText(this,β"ServiceβDestroyed",βToast.LENGTH_LONG).show(); βββ β} ββββ ββββprivate βint βDownloadFile(URLβ url) β{ βtryβ { ββββββββββββ//---simulateβ taking βsomeβtime βto βdownload βaβ file--- ββββββββββββ Thread.sleep(5000); ββββββββ} βcatchβ(InterruptedException βe)β { ββββββββββββe.printStackTrace(); β βββββββ} ββββββββ//---return βan βarbitrary βnumberβ representing β ββββββ//βthe βsizeβ of βthe βfile βdownloaded--- β βββββββreturnβ 100; β βββ} ββββ private class DoBackgroundTask extends AsyncTask<URL, Integer, Long> { ββββββββprotected Long doInBackground(URL... urls) { ββββββββββββint count = urls.length; ββββββββββββlong totalBytesDownloaded = 0; ββββββββββββfor (int i = 0; i < count; i++) { ββββββββββββββββtotalBytesDownloaded += DownloadFile(urls[i]); ββββββββββββββββ//---calculate percentage downloaded and ββββββββββββββββ// report its progress--- β βββββββββββββββpublishProgress((int) (((i+1) / (float) count) * 100)); β βββββββββββ} ββββββββββββreturn totalBytesDownloaded; ββ ββββββ} ββββββββ protected void onProgressUpdate(Integer... progress) { ββββββββββββLog.d("Downloading files", ββββββββββββββββββββString.valueOf(progress[0]) + "% downloaded"); ββββββββββββ Toast.makeText(getBaseContext(), ββββββββββββββββString.valueOf(progress[0]) + "% downloaded", ββββββββββββββββToast.LENGTH_LONG).show(); ββββββββ } ββββββββ protected void onPostExecute(Long result) { ββββββββββββToast.makeText(getBaseContext(), ββββββββββββββββββββ"Downloaded " + result + " bytes", ββββββββββββββββββββToast.LENGTH_LONG).show(); ββ ββββββββββstopSelf(); ββββββββ} β βββ} }
Try it, maybe this is work. Thanks.
source share