|
@@ -18,6 +18,8 @@ import java.net.URL;
|
|
|
import java.util.concurrent.Callable;
|
|
import java.util.concurrent.Callable;
|
|
|
import java.util.concurrent.ExecutionException;
|
|
import java.util.concurrent.ExecutionException;
|
|
|
import java.util.concurrent.FutureTask;
|
|
import java.util.concurrent.FutureTask;
|
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
+import java.util.concurrent.TimeoutException;
|
|
|
|
|
|
|
|
import io.reactivex.Observable;
|
|
import io.reactivex.Observable;
|
|
|
import io.reactivex.Observer;
|
|
import io.reactivex.Observer;
|
|
@@ -51,8 +53,8 @@ public class HtmlImageGetterUtil implements Html.ImageGetter{
|
|
|
public Drawable getDrawable(String source) {
|
|
public Drawable getDrawable(String source) {
|
|
|
getHtmlDrawable(source);
|
|
getHtmlDrawable(source);
|
|
|
try {
|
|
try {
|
|
|
- return drawableFutureTask.get();
|
|
|
|
|
- } catch (ExecutionException | InterruptedException e) {
|
|
|
|
|
|
|
+ return drawableFutureTask.get(2000, TimeUnit.MILLISECONDS);
|
|
|
|
|
+ } catch (ExecutionException | InterruptedException | TimeoutException e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
@@ -61,25 +63,9 @@ public class HtmlImageGetterUtil implements Html.ImageGetter{
|
|
|
FutureTask<Drawable> drawableFutureTask;
|
|
FutureTask<Drawable> drawableFutureTask;
|
|
|
private void getHtmlDrawable(String source){
|
|
private void getHtmlDrawable(String source){
|
|
|
|
|
|
|
|
- drawableFutureTask = new FutureTask<Drawable>(new Runnable() {
|
|
|
|
|
- @Override
|
|
|
|
|
- public void run() {
|
|
|
|
|
- InputStream inputStream = null;
|
|
|
|
|
- try {
|
|
|
|
|
- inputStream = (InputStream) new URL(source).getContent();
|
|
|
|
|
- drawable = Drawable.createFromStream(inputStream, "src");
|
|
|
|
|
- drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
|
|
|
|
|
- inputStream.close();
|
|
|
|
|
- LogUtil.e("getHtmlDrawable","..................");
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- LogUtil.e("getHtmlDrawable",".................." + e.toString());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- },drawable);
|
|
|
|
|
-
|
|
|
|
|
-// drawableFutureTask = new FutureTask<Drawable>(new Callable<Drawable>() {
|
|
|
|
|
|
|
+// drawableFutureTask = new FutureTask<Drawable>(new Runnable() {
|
|
|
// @Override
|
|
// @Override
|
|
|
-// public Drawable call() throws Exception {
|
|
|
|
|
|
|
+// public void run() {
|
|
|
// InputStream inputStream = null;
|
|
// InputStream inputStream = null;
|
|
|
// try {
|
|
// try {
|
|
|
// inputStream = (InputStream) new URL(source).getContent();
|
|
// inputStream = (InputStream) new URL(source).getContent();
|
|
@@ -87,35 +73,38 @@ public class HtmlImageGetterUtil implements Html.ImageGetter{
|
|
|
// drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
|
|
// drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
|
|
|
// inputStream.close();
|
|
// inputStream.close();
|
|
|
// LogUtil.e("getHtmlDrawable","..................");
|
|
// LogUtil.e("getHtmlDrawable","..................");
|
|
|
-// return drawable;
|
|
|
|
|
// } catch (Exception e) {
|
|
// } catch (Exception e) {
|
|
|
// LogUtil.e("getHtmlDrawable",".................." + e.toString());
|
|
// LogUtil.e("getHtmlDrawable",".................." + e.toString());
|
|
|
-// return null;
|
|
|
|
|
// }
|
|
// }
|
|
|
// }
|
|
// }
|
|
|
-// });
|
|
|
|
|
|
|
+// },drawable);
|
|
|
|
|
|
|
|
- Observable.fromFuture(drawableFutureTask).subscribe(new Observer<Drawable>() {
|
|
|
|
|
|
|
+ Scheduler.Worker worker = Schedulers.io().createWorker();
|
|
|
|
|
+ worker.schedule(new Runnable() {
|
|
|
@Override
|
|
@Override
|
|
|
- public void onSubscribe(Disposable d) {
|
|
|
|
|
- LogUtil.e("onSubscribe","..................");
|
|
|
|
|
|
|
+ public void run() {
|
|
|
drawableFutureTask.run();
|
|
drawableFutureTask.run();
|
|
|
}
|
|
}
|
|
|
|
|
+ });
|
|
|
|
|
|
|
|
|
|
+ drawableFutureTask = new FutureTask<Drawable>(new Callable<Drawable>() {
|
|
|
@Override
|
|
@Override
|
|
|
- public void onNext(Drawable drawable) {
|
|
|
|
|
- LogUtil.e("onNext","..................");
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- @Override
|
|
|
|
|
- public void onError(Throwable e) {
|
|
|
|
|
- LogUtil.e("onError",".................." + e.toString());
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- @Override
|
|
|
|
|
- public void onComplete() {
|
|
|
|
|
-
|
|
|
|
|
|
|
+ public Drawable call() throws Exception {
|
|
|
|
|
+ InputStream inputStream = null;
|
|
|
|
|
+ try {
|
|
|
|
|
+ inputStream = (InputStream) new URL(source).getContent();
|
|
|
|
|
+ drawable = Drawable.createFromStream(inputStream, "src");
|
|
|
|
|
+ drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
|
|
|
|
|
+ inputStream.close();
|
|
|
|
|
+ LogUtil.e("getHtmlDrawable","..................");
|
|
|
|
|
+ return drawable;
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ LogUtil.e("getHtmlDrawable",".................." + e.toString());
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ Observable<Drawable> observable = Observable.fromFuture(drawableFutureTask);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|