Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 来自改装和x2B的负荷数据期间的进度对话框冻结;RxJava_Android_Retrofit_Rx Java - Fatal编程技术网

Android 来自改装和x2B的负荷数据期间的进度对话框冻结;RxJava

Android 来自改装和x2B的负荷数据期间的进度对话框冻结;RxJava,android,retrofit,rx-java,Android,Retrofit,Rx Java,我正在使用一个ProgressDialog在发出Rest请求之前显示,请求的响应很大,这将冻结ProgressDialog的动画。我怎样才能解决这个问题?我只发现一些例子说使用runOnUiThread或doInBackground和AsyncTask但是,我使用的是RxJava。我尝试了runOnUiThread,但没有成功 //My request public void getMyData(final MyListener listener) { AppApi AppApi = getIn

我正在使用一个
ProgressDialog
在发出Rest请求之前显示,请求的响应很大,这将冻结
ProgressDialog
的动画。我怎样才能解决这个问题?我只发现一些例子说使用
runOnUiThread
doInBackground
AsyncTask
但是,我使用的是
RxJava
。我尝试了
runOnUiThread
,但没有成功

//My request
public void getMyData(final MyListener listener) {
AppApi AppApi = getInstanceMyApi();

        AppApi.getMyData()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ResponseData>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {
                       //error
                    }

                    @Override
                    public void onNext(ResponseData response) {
                        //success, send data to presenter to update view
                    }
                });

//Presenter call ws
public void attemptGetDataFromWS() {
    showProgress();
    getMyData(this);
}

@Override
public void onGetMyDataSuccess(ResponseData response) {
     hideProgress();
}

@Override
public void onGetMyDataError(String error) {
     hideProgress();
}
//我的请求
public void getMyData(最终MyListener侦听器){
AppApi AppApi=getInstanceMyApi();
AppApi.getMyData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(新观察员){
@凌驾
未完成的公共无效(){
}
@凌驾
公共无效申报人(可丢弃的e){
//错误
}
@凌驾
public void onNext(响应数据响应){
//成功,将数据发送给演示者以更新视图
}
});
//演示者呼叫ws
public void attemptGetDataFromWS(){
showProgress();
getMyData(此);
}
@凌驾
公共无效OnGetMyDataSucces(响应数据响应){
hideProgress();
}
@凌驾
公共无效onGetMyDataError(字符串错误){
hideProgress();
}

遵循此方法。这是使用REST API+改型调用示例

private void callRestAPI() {
    Retrofit retrofit = new Retrofit.Builder().baseUrl(BASEURL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    newsAPI = retrofit.create(NewsAPI.class);

    Call<JSONResponse> call = newsAPI.topNews("soure", "api-key");

    // Set up progress before call
    final ProgressDialog progressDoalog;
    progressDoalog = new ProgressDialog(MainActivity.this);
    progressDoalog.setMax(100);
    progressDoalog.setMessage("Its loading....");
    progressDoalog.setTitle("ProgressDialog bar example");
    progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    // show it
    progressDoalog.show();

    call.enqueue(new Callback<JSONResponse>() {

        @Override
        public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
            // close it after response
            progressDoalog.dismiss();
        }
    }

    @Override public void onFailure (Call < JSONResponse > call, Throwable t){
        // close it after response
        progressDoalog.dismiss();
    }
});
}
private void callRestAPI(){
改装改装=新建改装.Builder().baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.build();
newsAPI=reformation.create(newsAPI.class);
Call Call=newsAPI.topNews(“soure”,“api key”);
//在呼叫前设置进度
最终进度对话框进度日志;
progressDoalog=新建ProgressDialog(MainActivity.this);
progressDoalog.setMax(100);
progressDoLog.setMessage(“其加载…”);
setTitle(“ProgressDialog栏示例”);
progressDoalog.setProgressStyle(ProgressDialog.STYLE_水平);
//表现出来
progressDoalog.show();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
//响应后关闭它
progressDoalog.disclose();
}
}
@重写公共void onFailure(调用Call,可丢弃的t){
//响应后关闭它
progressDoalog.disclose();
}
});
}
公共void getMyData(最终MyListener侦听器){
AppApi AppApi=getInstanceMyApi();
AppApi.getMyData()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.认购(新的可处置观察员){
@凌驾
未完成的公共无效(){
处置();
}
@凌驾
公共无效申报人(可丢弃的e){
onGetMyDataError(例如getMessage());
}
@凌驾
public void onNext(响应数据响应){
onGetMyDataSucces(响应);
}
});
//演示者呼叫ws
public void attemptGetDataFromWS(){
showProgress();
getMyData(此);
}
@凌驾
公共无效OnGetMyDataSucces(响应数据响应){
hideProgress();
}
@凌驾
公共无效onGetMyDataError(字符串错误){
hideProgress();
}

你应该提供一些代码。你应该用一些代码显示你的代码i更新。可能是解析过程冻结了你的应用程序。你应该显示更多代码(解析或在UI线程中执行任何操作)是的,显示在调用onNext时你正在执行的操作
public void getMyData(final MyListener listener) {
AppApi AppApi = getInstanceMyApi();

        AppApi.getMyData()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new DisposableObserver<ResponseData>() {
                    @Override
                    public void onCompleted() {
                         dispose();
                    }

                    @Override
                    public void onError(Throwable e) {
                       listener.onGetMyDataError(e.getMessage());
                    }

                    @Override
                    public void onNext(ResponseData response) {
                        listener.onGetMyDataSuccess(response);
                    }
                });

//Presenter call ws
public void attemptGetDataFromWS() {
    showProgress();
    getMyData(this);
}

@Override
public void onGetMyDataSuccess(ResponseData response) {
     hideProgress();
}

@Override
public void onGetMyDataError(String error) {
     hideProgress();
}