Android handler: Can't create handler inside thread that has not called Looper.prepare()

StackOverflow https://stackoverflow.com/questions/23140984

  •  05-07-2023
  •  | 
  •  

質問

I have a thread:

public class KelvinThread implements Runnable {

private Handler mSoundHandler;

public KelvinThread() {
    super();
    mSoundHandler = new Handler();
}

private Runnable mSoundThread = new Runnable() {
    public void run() {
        // my treatment
    }
};

@Override
public void run() {
    while (true) {
        // ....
        mSoundHandler.postDelayed(mSoundThread, 2000);
        // ....
    }
}

This thread "KelvinThread" is created and started from another Thread.

I have this error:

Can't create handler inside thread that has not called Looper.prepare()

when my handler is allocated : mSoundHandler = new Handler();

Thank you for your help guys !

役に立ちましたか?

解決

Please refer to Looper documentation. There is also example.

UPD You might also be able to use Looper.getMainLooper() to attach handler to main looper instead of creating thread one.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top