- 
                Notifications
    
You must be signed in to change notification settings  - Fork 1.3k
 
Closed
Labels
Description
Summary:
Sometimes the toast is not shown if the caller thread isn't the UI thread.
Steps to reproduce:
Try to download an image.
Add System logs:
2018-07-19 15:04:29.857 19670-19957/fr.free.nrw.commons.debug E/unknown:: unhandled exception
    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
        at android.os.Handler.<init>(Handler.java:200)
        at android.os.Handler.<init>(Handler.java:114)
        at android.widget.Toast$TN$2.<init>(Toast.java:340)
        at android.widget.Toast$TN.<init>(Toast.java:340)
        at android.widget.Toast.<init>(Toast.java:103)
        at android.widget.Toast.makeText(Toast.java:256)
        at fr.free.nrw.commons.utils.ViewUtil.showLongToast(ViewUtil.java:22)
        at fr.free.nrw.commons.utils.ImageUtils.setWallpaper(ImageUtils.java:200)
        at fr.free.nrw.commons.utils.ImageUtils.access$000(ImageUtils.java:36)
        at fr.free.nrw.commons.utils.ImageUtils$1.onNewResultImpl(ImageUtils.java:181)
        at com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber.onNewResultImpl(BaseBitmapDataSubscriber.java:62)
        at com.facebook.datasource.BaseDataSubscriber.onNewResult(BaseDataSubscriber.java:48)
        at com.facebook.datasource.AbstractDataSource$1.run(AbstractDataSource.java:178)
        at com.facebook.common.executors.CallerThreadExecutor.execute(CallerThreadExecutor.java:49)
        at com.facebook.datasource.AbstractDataSource.notifyDataSubscriber(AbstractDataSource.java:169)
        at com.facebook.datasource.AbstractDataSource.notifyDataSubscribers(AbstractDataSource.java:160)
        at com.facebook.datasource.AbstractDataSource.setResult(AbstractDataSource.java:212)
        at com.facebook.imagepipeline.datasource.AbstractProducerToDataSourceAdapter.onNewResultImpl(AbstractProducerToDataSourceAdapter.java:73)
        at com.facebook.imagepipeline.datasource.CloseableProducerToDataSourceAdapter.onNewResultImpl(CloseableProducerToDataSourceAdapter.java:57)
        at com.facebook.imagepipeline.datasource.CloseableProducerToDataSourceAdapter.onNewResultImpl(CloseableProducerToDataSourceAdapter.java:25)
        at com.facebook.imagepipeline.datasource.AbstractProducerToDataSourceAdapter$1.onNewResultImpl(AbstractProducerToDataSourceAdapter.java:51)
        at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult(BaseConsumer.java:99)
        at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer.onNextResult(MultiplexProducer.java:444)
        at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer$ForwardingConsumer.onNewResultImpl(MultiplexProducer.java:501)
        at com.facebook.imagepipeline.producers.MultiplexProducer$Multiplexer$ForwardingConsumer.onNewResultImpl(MultiplexProducer.java:498)
        at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult(BaseConsumer.java:99)
        at com.facebook.imagepipeline.producers.BitmapMemoryCacheProducer$1.onNewResultImpl(BitmapMemoryCacheProducer.java:145)
        at com.facebook.imagepipeline.producers.BitmapMemoryCacheProducer$1.onNewResultImpl(BitmapMemoryCacheProducer.java:103)
        at com.facebook.imagepipeline.producers.BaseConsumer.onNewResult(BaseConsumer.java:99)
        at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.handleResult(DecodeProducer.java:350)
        at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.doDecode(DecodeProducer.java:272)
        at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder.access$200(DecodeProducer.java:109)
        at com.facebook.imagepipeline.producers.DecodeProducer$ProgressiveDecoder$1.run(DecodeProducer.java:142)
        at com.facebook.imagepipeline.producers.JobScheduler.doJob(JobScheduler.java:204)
        at com.facebook.imagepipeline.producers.JobScheduler.access$000(JobScheduler.java:24)
        at com.facebook.imagepipeline.producers.JobScheduler$1.run(JobScheduler.java:75)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at com.facebook.imagepipeline.core.PriorityThreadFactory$1.run(PriorityThreadFactory.java:42)
        at java.lang.Thread.run(Thread.java:760)
Would you like to work on the issue?
Yes.