حل ارور Can’t create handler inside thread that has not called Looper.prepare()

با سلام، تو این پست میخوام در مورد ارور Can’t create handler inside thread that has not called Looper.prepare()  بنویسم.

اول از همه این ارور چه زمانی رخ میده!؟ زمانی که داریم از داخل worker thread یه تابع مرتبط با ui را صدا می زنیم. 

برای فراخوانی توابعی همچون Toast.makeText() باید آنها را داخل main thread فراخوانی کنیم.

امّا راه حل:

خب چند تا راه مختلف وجود داره که از قرار موارد زیر هستند:

  • استفاده از RxAndroid
  • runOnUiThread
  • LOOPER
  • AsyncTask
  • Handler

 

من خودم از روش AsyncTask استفاده می کنم، و به ما اجازه می ده که کارهای ناهمگام (asynchronous) را روی UI انجام دهیم. روشی ساده که نمونه کدش میشه:

public void onClick(View v) {
    new CustomTask().execute((Void[])null);
}


private class CustomTask extends AsyncTask<Void, Void, Void> {

    protected Void doInBackground(Void... param) {
        //Do some work
        return null;
    }

    protected void onPostExecute(Void param) {
        //Print Toast or open dialog
    }
}

 

نویسنده

erotik film

www.loyloy.net

cimcikle.com

bodrum escort

çanakkale escort

fuckedhardgfs.net

kapaklı escort

çerkezköy kapaklı escort

www.repley.net

erotik film

www.laripe.com