public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
Log.i("Service","Service onCreate");
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("Service","Service onStartCommand");
try{
new DoBackgroundTask().execute(
new URL("https://kiwivm.64clouds.com/dist/shadowsocks-win-dotnet4.0-2.3.zip"),
new URL("https://kiwivm.64clouds.com/dist/shadowsocks-win-dotnet4.1-2.3.zip"),
new URL("https://kiwivm.64clouds.com/dist/shadowsocks-win-dotnet4.2-2.3.zip"),
new URL("https://kiwivm.64clouds.com/dist/shadowsocks-win-dotnet4.3-2.3.zip")
);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return START_STICKY;
}
private int DownloadFile(URL url){
try{
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return 100;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i("Service","Service onDestroy");
}
private class DoBackgroundTask extends AsyncTask<URL,Integer,Long>{
@Override
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalByteDownload = 0;
for(int i =0;i< count;i++){
totalByteDownload += DownloadFile(urls[i]);
publishProgress((int) (((i+1)/(float)count)*100));
}
return totalByteDownload;
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
Log.i("Service","Downloading file: "+String.valueOf(values[0] + "% downloaded"));
}
@Override
protected void onPostExecute(Long aLong) {
super.onPostExecute(aLong);
Log.i("Service","Downloading file: "+ aLong + "bytes");
stopSelf();
}
}
}