android - 为什么 Observable.create() 在单击时不起作用?
问题描述
在我的应用程序中,我在 menuitemclicked 中添加了 Observable 方法,但是当我单击它两次时它正在工作。单按。方法不起作用,但按钮工作正常对此的任何建议或方法的任何更改。
case R.id.upload:
fetch() 中断;
io.reactivex.Observable fetchObservable() {
return io.reactivex.Observable.create(new ObservableOnSubscribe<Data>() {
@Override
public void subscribe(ObservableEmitter<Data> emitter) throws Exception {
try {
final Cursor cursor = getActivity().getContentResolver().query(android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_URI, new String[]{"display_name", "data1"}, null, null, null);
// final Map contact =new HashMap();
while (cursor.moveToNext()) {
Data data = new Data();
try {
String name = cursor.getString(cursor.getColumnIndex(Display_name));
String number = cursor.getString(cursor.getColumnIndex(Data1));
data.setContact_name(name);
data.setNumber(number);
Thread.sleep(60);
emitter.onNext(data);
} catch (Exception e) {
Toast.makeText(context, "not insert , Toast.LENGTH_SHORT).show();
}
}
emitter.onComplete();
}catch (Exception e){
emitter.onError(e);
}
}
});
// 获取方法代码
void fetch(){
fetchObservable().subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Data data) {
data.Contact_name=data.getContact_name();
data.number=data.getNumber();
String name= data.Contact_name;
String number= data.number;
}
count++;
textprogress.setText(String.valueOf(count));
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
解决方案
因为你没有像这样在主线程中运行你的 UI
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
textprogress.setVisibility(View.VISIBLE);
textprogress.setVisibility(View.VISIBLE);
}
});
推荐阅读
- python - 在不同的窗口中重用 Tkinter 代码
- mysql - MySQL:如何做一个组合三个表的矩阵
- php - 基于字符串显示图像
- php - PHP URL 参数重定向 - 使用通配符/正则表达式
- java - 为什么尝试使用 JpaRepository 中的 save() 方法插入新记录时出现“用户”或附近的“语法错误”错误?
- javascript - 随机数学测验人工验证
- python - Python如何检查变量状态是否改变,在另一个调度线程中共享和编辑,而不使用while循环检查
- c++ - 与 NDK (r19c) 的链接错误:找不到 -lpthread
- email - 从 Windows 桌面应用程序发送电子邮件的未来
- reactjs - 在 react js 中下载 CSV 文件