4 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
** 這對(duì)我有用 **
@NonNull
@Override
public Result doWork() {
final Result[] result = new Result[1];
mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {
@Override
public void uploadComplete() {
result[0] = Result.success(); //this is what I want to do
}
@Override
public void uploadFailed(String reason) {
result[0] = Result.failure(); //this is what I want to do
}
});
return result[0];
}

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
public Result doWork(UpLoadDataService.UploadCompleteListener uploadListener) {
mUpLoadDataService.uploadInspectionData(uploadListener);
return null;
}
現(xiàn)在傳遞父函數(shù)的實(shí)現(xiàn)。假設(shè)你的父函數(shù)被命名為foobar
void foobar() {
someObject.doWork(new UpLoadDataService.UploadCompleteListener() {
@Override
public void uploadComplete() {
//write your logic here
return Result.success();
}
@Override
public void uploadFailed(String reason) {
//write your logic here
return Result.failure();
}
});
}

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用以下方式獲取任務(wù)的回調(diào)
doWork(paremter, new ServiceListener<String>() { //paremter if any
@Override
public void success(String obj) {
//get the response if success
}
@Override
public void fail(ServiceError error) {
//get the error response
}
});
完成工作并從調(diào)用的地方發(fā)送調(diào)用響應(yīng)
private void doWork(String param , ServiceListener<String> serviceListener) {
mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {
@Override
public void uploadComplete() {
serviceListener.success("success");
}
@Override
public void uploadFailed(String reason) {
serviceListener.fail(new ServiceError("Can not Upload"));
}
});
}
ServiceListener接口定義如下
public interface ServiceListener<T> {
void success(T obj);
void fail(ServiceError error);
}
public class ServiceError {
public Throwable errorObject;
public String message;
public ServiceError(){
message = "";
}
public ServiceError(String message){
this.message = message;
}
public ServiceError(String message, Throwable errorObject){
this.message = message;
this.errorObject = errorObject;
}
public Object getErrorObject() {
return errorObject;
}
public void setErrorObject(Throwable errorObject) {
this.errorObject = errorObject;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以EventBus在您想要的每個(gè)地方使用通知訂閱方法,如下所示:
public class MessageEvent {
public final String message;
public MessageEvent(String message) {
this.message = message;
}
}
public void doWork() {
mUpLoadDataService.uploadInspectionData(new UpLoadDataService.UploadCompleteListener() {
@Override
public void uploadComplete() {
EventBus.getDefault().post(new MessageEvent("success"));
}
@Override
public void uploadFailed(String reason) {
EventBus.getDefault().post(new MessageEvent("failed"));
}
});
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {
Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}
請參閱本實(shí)施指南。
添加回答
舉報(bào)