gpt4 book ai didi

android - NetworkOnMainThread 与 Scheduler.io()

转载 作者:行者123 更新时间:2023-11-29 19:11:36 27 4
gpt4 key购买 nike

我尝试过使用 Scheduler.newThread() 和 Scheduler.io() 但还是不行这是我的代码

Observable<Response> loginObservable = Observable.create(new ObservableOnSubscribe<Response>() {
@Override
public void subscribe(final ObservableEmitter<Response> emitter) throws Exception {

btSignin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(validateFields()) {

// progressDialog.show();

Configs configs = new Configs(LoginActivity.this);
String versionName = new AppUtils(LoginActivity.this).getVersionName();

credentials.setGrantType(GRANT_TYPE_PASSWORD);
credentials.setUserName(username.getText().toString().trim());
credentials.setPassword(password.getText().toString());
credentials.setAppId(configs.getValue(APP_ID));
credentials.setOs(Build.VERSION_CODES.class.getFields()[Build.VERSION.SDK_INT].getName());
credentials.setBrowser(versionName);

// TODO: 05-Jul-17 get device type programmatically
credentials.setDevice("Tablet");

httpAuth = new HttpAuth.Builder()
.setBaseUrl(configs.getValue(BASE_URL))
.setCredentials(credentials)
.build();
// ** This is network request**
Response response = httpAuth.loginToken("Token", TOKEN_NEW);

emitter.onNext(response);
emitter.onComplete();
}
}
});
}
});

这就是我订阅的方式

loginObservable
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())

.subscribe(observer);

在此 Response response = httpAuth.loginToken("Token", TOKEN_NEW);

处获取 android.os.NetworkOnMainThreadException

请帮忙。

最佳答案

您只在 Schedulers.newThread() 中将 onClickListener 设置为按钮,但是在 onClick 中执行的代码是在主线程。这就是异常的原因。

关于android - NetworkOnMainThread 与 Scheduler.io(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45102040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com