0

This is my run() method of a worker thread which is executed using an executor:

@Override
public void run() {
    Looper.prepare();
    Log.i(TAG, "Starting Thread" );
    final Bitmap bitmap=getBitmap(imageUrl);
    handler=new Handler();
    Message message;
    message=Message.obtain();
    message.obj=bitmap;
    handler.sendMessage(message);
    Log.i(TAG, "Thread Completed ");
}

This is the code of my adapter class where I am expecting to get the message:

@Override
public void onBindViewHolder(@NonNull final OwnerViewHolder ownerViewHolder, int i) {
    Owner item=list.get(ownerViewHolder.getAdapterPosition());
    ownerViewHolder.image.setImageResource(0);
    download(item.getProfileImage());

    ownerViewHolder.textView.setText(item.getDisplayName());
    ownerViewHolder.textView1.setText(item.getUserType());

    new Handler(Looper.getMainLooper()){
        public void handleMessage(Message message){
            ownerViewHolder.image.setImageBitmap((Bitmap)message.obj);
            super.handleMessage(message);
        }
    };
}

This is the code of my ThreadPoolExecutor:

private void download(String imageUrl){
    int NUMBER_OF_CORES = Runtime.getRuntime().availableProcessors();

    ThreadPoolExecutor executor = new ThreadPoolExecutor(
            NUMBER_OF_CORES * 2,
            NUMBER_OF_CORES * 2,
            60L,
            TimeUnit.SECONDS,
            new LinkedBlockingQueue<Runnable>()
    );
    longThread=new LongThread(imageUrl);
    executor.execute(longThread);
}

I don't know how to pass the bitmap from the worker thread to the main thread using handler and executor. How can I do that?

honk
  • 9,137
  • 11
  • 75
  • 83
AMAN JAIN
  • 1
  • 6

0 Answers0