JessYanCoding / JessYanCoding/AndroidAutoSize

AutoSize1.2.1版本导致线程调度抛异常Not in applications main thread

Aberta
#359 11 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Java
Estrelas
13.7k
Forks
2k
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

autosize/src/main/java/me/jessyan/autosize/utils/Preconditions.java中checkMainThread方法的调用导致线程异常,使用Thread或rxJava等线程,执行部分操作会触发"Not in applications main thread"异常。

具体表现:
1.Thread中进行下载并更新通知栏下载进度,下载完成后设置通知栏完成状态点击可安装,这时就会抛出IllegalStateException"Not in applications main thread",完成通知消息无法显示并无法弹出系统安装;
2.

private void setQRImage(String qrcodeString, ImageView mQrcodeImage, boolean isCicle) {
if (TextUtils.isEmpty(qrcodeString)) return;
Observable.create(new Observable.OnSubscribe() {
@Override
public void call(Subscriber subscriber) {
Bitmap bitmap;
try {
int size = (int) Utils.dpTopx(255f);
bitmap = QRCodeUtil.creatQrCode(qrcodeString, size, size, BitmapFactory.decodeResource(mQrcodeImage.getContext().getResources(), R.mipmap.app_icon), 0);
subscriber.onNext(!isCicle ? bitmap : BitmapUitl.drawRoval(BitmapUitl.ALL, bitmap));
} catch (WriterException e) {
e.printStackTrace();
subscriber.onError(e);
}

subscriber.onCompleted();
}
}).compose(TransformUtils.defaultSchedulers())
.subscribe(new Observer() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onNext(Bitmap bitmap) {
mQrcodeImage.setImageBitmap(bitmap);
}
});
}
以上代码生成二维码,同样抛出IllegalStateException"Not in applications main thread"

3.同上使用RxJava call中使用Glide.get()方法获取Bitmap,调用两次时同样会抛出异常

4.使用友盟分享SDK进行小程序、单图分享功能,当图片为本地图片时无法进行分享,查看友盟SDK相关代码,同样使用了线程获取本地图片,获取时抛异常导致;

解决:

public static void checkMainThread() {
if (Looper.myLooper() != Looper.getMainLooper()) {
throw new IllegalStateException("Not in applications main thread");
}
}

不应该抛异常,调整成返回值供外部调用即可

public static boolean checkMainThread() {
return Looper.myLooper() == Looper.getMainLooper();
}

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.