I have to upload data to a server. I am using a service that is running on the same process as my application. Should I use a Separate thread for upload process or Should I
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,“ServiceStarted”,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,“ServiceDestroyed”,Toast.LENGTH_LONG).show();
}
private int DownloadFile(URL url)
{
try
{
//---simulate taking sometime 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
{
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 this it may be work. Thank you.