Android 从服务中的URL加载文件
我尝试在服务中加载照片。 此方法在onStartCommand()中调用 但如果我关闭应用程序,我会收到一个异常: android.os.NetworkOnMainThreadException Utils.getQueryObserver()方法: 公共静态可观察getQueryObserver(上下文上下文、Uri、字符串[]投影、字符串选择、字符串[]选择、字符串顺序){ 返回Observable.defer(()->Observable.just(context.getContentResolver()) .query(uri、投影、选择、选择符、顺序)); } .flatMap(可观察::来自) 返回任务列表,每个任务都包含图像的URL,之后在 writeFile()Android 从服务中的URL加载文件,android,rx-java,rx-android,Android,Rx Java,Rx Android,我尝试在服务中加载照片。 此方法在onStartCommand()中调用 但如果我关闭应用程序,我会收到一个异常: android.os.NetworkOnMainThreadException Utils.getQueryObserver()方法: 公共静态可观察getQueryObserver(上下文上下文、Uri、字符串[]投影、字符串选择、字符串[]选择、字符串顺序){ 返回Observable.defer(()->Observable.just(context.getContentRe
方法我依次为每个url调用OKHTTP请求。为任何网络调用使用后台线程。如何实现它?您有什么例子吗?谢谢,.subscribeOn(Schedulers.newThread())帮助menew Thread(new Runnable(…).start()??
private void loadPhotos() {
//add Subscription in CompositeSubscription
mSubscription.add(Utils.getQueryObserver(this, DataProvider.CONTENT_TASKS_URI, null, LoadingTask.COLUMN_ISMAIN + " = ?",
new String[]{String.valueOf(1)}, null)
.subscribeOn(Schedulers.io())
//create list of tasks
.map(this::createTasks)
//merge with another part of tasks
.mergeWith(Utils.getQueryObserver(this, DataProvider.CONTENT_TASKS_URI, null, LoadingTask.COLUMN_ISMAIN + " = ?",
new String[]{String.valueOf(0)}, null)
.map(this::createTasks))
.flatMap(Observable::from)
// exception here
.subscribe(this::writeFile,
Throwable::getCause,
//stop service
this::stopSelf));
}
public static Observable<Cursor> getQueryObserver(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String order) {
return Observable.defer(() -> Observable.just(context.getContentResolver()
.query(uri, projection, selection, selectionArgs, order)));
}