//直接上代码 Service :
public class UploadPictureService extends Service{
public static final String PATH_KEY = "sdcard_path_list";
private ArrayList<String> picturePaths;
private ServiceBinder mBinder;
private String TAG = UploadPictureService.class.getName();
public interface IUploadFinishListener {
void onUploadFinished(ArrayList<String> jdImgUrls);
}
public class ServiceBinder extends Binder {
IUploadFinishListener callBack;
public void keepCallback(IUploadFinishListener cb){
callBack = cb;
}
public void businessFinished(){
stopSelf();
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
picturePaths = intent.getStringArrayListExtra(PATH_KEY);
mBinder = new ServiceBinder();
return mBinder;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
picturePaths = intent.getStringArrayListExtra(PATH_KEY);
uploadPicture();
return super.onStartCommand(intent, flags, startId);
}
private void uploadPicture(){
// 在这里做实质性的事情
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
//Activity
...
/**
*
*/
private void uploadPictureByService(ArrayList<String> pathStrings){
Intent intent = new Intent(this, UploadPictureService.class);
bindService(intent, new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
UploadPictureService.ServiceBinder binder = (UploadPictureService.ServiceBinder) service;
binder.keepCallback(new ServiceFinishCallback(binder));
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
},0);
intent.putExtra(UploadPictureService.PATH_KEY,pathStrings);
startService(intent);
}
static class ServiceFinishCallback implements UploadPictureService.IUploadFinishListener {
UploadPictureService.ServiceBinder binder;
ServiceFinishCallback(UploadPictureService.ServiceBinder binder) {
this.binder = binder;
}
@Override
public void onUploadFinished(ArrayList<String> jdImgUrls) {
//
//if dispose finished
binder.businessFinished();
}
}
...