كيفية رفع الخبز المحمص في Asynctask ، يُطلب مني استخدام Looper

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

سؤال

لدي مهام الانتهاء من Asynctask في الخلفية. في مرحلة ما ، أحتاج إلى إصدار نخب أن شيئًا ما قد اكتمل.

لقد حاولت وفشلت بسببCaused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

كيف أقوم بذلك؟

هل كانت مفيدة؟

المحلول

onpostexecute - ينفذ على موضوع واجهة المستخدم أو publishProgress(); ؛ في doinbackground الخاص بك و

protected void onProgressUpdate(Integer... progress) {
}

http://developer.android.com/reference/android/os/asynctask.html

نصائح أخرى

يمكنك نخب داخل Doinbackground

أضف هذا الرمز حيث تريد أن يظهر الخبز المحمص

runOnUiThread(new Runnable() {
public void run() {

    Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show();
    }
});

تستطيع ايضا استخذام Runonuithread طريقة لمعالجة واجهة المستخدم الخاصة بك من خيوط الخلفية.

إذا كنت ترغب في استخدام الخبز المحمص ، فيجب عليك استخدام هذه الطريقة: OnProgressUpDate ()

protected Integer doInBackground(Void...Params) {
   int check_point = 1;
   publishProgress(check_point);
   return check_point;
}

protected void onProgressUpdate(Integer integers) {
  if(integers == 1) {
    Toast.makeText(classname.this, "Text", 0).show(); 
}

إذا كنت ترغب في عرض الخبز المحمص من موضوع الخلفية ، فسوف يتعين عليك الاتصال بـ RunonuithRead من DoInbackground. لا أعتقد أن هناك طريقة أخرى.

تحرير: أنا أعود. أعتقد أنه يمكنك تنفيذ OnProgressUpdate ، الذي يعمل على موضوع واجهة المستخدم ، لإظهار الخبز المحمص وإجراء مكالمات للنشر من DoInbackground.

إذا كنت ترغب في عرض الخبز المحمص في DoInbackground ، فيمكنك استخدامه في طريقة onpostexecute من Asynctask.

protected void onPostExecute(String file_url) {    
   Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show();

   pDialog.dismiss();//dismiss the progress dialouge
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top