2012-02-27 18 views
10

मुझे पता चला है कि मेरी कुछ गतिविधियां लॉन्च पर अवरुद्ध हैं। तो मैं एक नई परियोजना में है कि कोड लिखा है:यूआई थ्रेड को अवरुद्ध करने वाले Admob से कैसे बचें

public class LayoutTestActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     long now = System.currentTimeMillis(); 

     new AdView(this, AdSize.BANNER, "MY_ID"); 

     Log.e("Admob Test","The UI was blocked "+(System.currentTimeMillis()-now)+"ms"); 
    } 
} 

और परिणाम है कि एक adview वस्तु ब्लॉक 1 और 2 के बीच सेकंड के लिए यूआई धागे की पहली रचना।

क्या इससे बचने का कोई तरीका है?

धन्यवाद

उत्तर

0

आप अपने यूआई धागा जो अवरुद्ध हो रही है के लिए कारण है, वहां अपने adview बना रहे हैं। जबकि एडव्यू इनिटिलाइजेशन होता है, थ्रेड कुछ और नहीं करता है।

आप अपने विज्ञापन को किसी अन्य थ्रेड में लोड करने का प्रयास कर सकते हैं या इसे UI सुरक्षित तरीके से लोड करने के लिए AsyncTask का उपयोग कर सकते हैं।

एंड्रॉइड में AsyncTask और थ्रेडिंग के बारे में अधिक जानकारी के लिए इसे जांचें।

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

+6

आप AsyncTask में loadAd कॉल नहीं कर सकते – codingpuss

1

उपयोग धागे:

public class LayoutTestActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    long now = System.currentTimeMillis(); 

    new Thread(new Runnable() { 

     public void run() { 
      new AdView(this, AdSize.BANNER, "MY_ID");    
     } 
    }).start(); 

    Log.e("Admob Test","The UI was blocked "+(System.currentTimeMillis()-now)+"ms"); 
} 
+0

आपका कोड एक Looper तैयारी की जरूरत है लेकिन हां आसान है सॉल्यूशन। वैसे भी उत्सुक है कि Google उत्पाद यूआई को इतना समय ब्लॉक करता है – Addev

4

मैं एक ऐसी ही समस्या हुई। (1 सेकंड के लिए विज्ञापन-अनुरोध देरी जो AdView के लिए समय लोड और यूआई ब्लॉक नहीं देता से यह संकल्प लिया।

 new Timer().schedule(new TimerTask() 
     { 
      @Override 
      public void run() 
      { 
       MainActivity.runOnUiThread(new Runnable() 
       { 
        @Override 
        public void run() 
        { 
         AdRequest adRequest = new AdRequest.Builder() 
           .addTestDevice(AD_TEST_DEVICE) 
           .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) 
           .build(); 

         adView.loadAd(adRequest); 
        } 
       }); 
      } 
     }, 1000); 
संबंधित मुद्दे