2013-07-11 10 views
5

Mam aktywność, w której reklamy są wypełniane przez tabelę dynamiczną wypełnioną z kodu Java, ta tabela zawiera obrazy, które są ładowane z sieci asynchronicznie. Gdy nie uwzględniam reklamy, wszystko działa zgodnie z oczekiwaniami. Ale gdy dołączę również widok, a także obrazy, które ładują się z sieci asynchronicznie, zawiesza się interfejs użytkownika, dopóki obrazy nie zostaną załadowane z sieci.Adview (admob) z asynchronicznym ładowaniem danych

Nie mogłem zrozumieć zachowania, czy możesz podać mi rozwiązanie, w którym obrazy powinny być ładowane asynchronicznie wraz z podglądem.

Poniżej jest mój kod działalność:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:id="@+id/linearLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    > 

    <com.google.ads.AdView 
     android:id="@+id/adView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ads:adSize="BANNER" 
     ads:adUnitId="********" 
     ads:loadAdOnCreate="true" 
     /> 

    <ScrollView 
     android:id="@+id/scroll1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <TableLayout 
      android:id="@+id/table_layout" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 

      <TableRow> 

       <TextView 
        android:id="@+id/left_text" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="0" 
        android:gravity="left|center_vertical" 
        android:padding="5dip" 
        android:text="Code" /> 

       <TextView 
        android:id="@+id/middle_text" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:gravity="right|center_vertical" 
        android:padding="5dip" 
        android:text="Name of Company" /> 

       <TextView 
        android:id="@+id/right_text" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="0" 
        android:gravity="right|center_vertical" 
        android:padding="5dip" 
        android:text="1.3" /> 
      </TableRow> 
     </TableLayout> 
    </ScrollView> 

</LinearLayout> 

Dzięki

Amandeep

+0

Mam również do czynienia z tym samym problemem. Czy ktoś może pomóc? – user93796

+0

Czy ktoś może nam w tym pomóc? – user93796

+0

Myślę, że to wymaga wyjaśnienia. Co i gdzie ładujesz jakieś obrazy? –

Odpowiedz

1

Może trzeba sepearte się adview od głównego LinearLayout, zamiast ładowania go wewnątrz układu liniowego, gdzie sieć (asynchroniczne) działania zostaną wykonane.

Po prostu spróbuj użyć układu ramki, z adView na górze & z margin_top z "55dp" dla LinearLayout.

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="top"> 

<com.google.ads.AdView xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:id="@+id/main_adView" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:gravity="center" 
    ads:adUnitId = "******" 
    ads:adSize = "BANNER" 
    > 

</com.google.ads.AdView> 
</LinearLayout> 

<LinearLayout 
android:id="@+id/linearLayout" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_marginTop="55dp" 
android:orientation="vertical"> 


<ScrollView 
    android:id="@+id/scroll1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableLayout 
     android:id="@+id/table_layout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <TableRow> 

      <TextView 
       android:id="@+id/left_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="0" 
       android:gravity="left|center_vertical" 
       android:padding="5dip" 
       android:text="Code" /> 

      <TextView 
       android:id="@+id/middle_text" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="right|center_vertical" 
       android:padding="5dip" 
       android:text="Name of Company" /> 

      <TextView 
       android:id="@+id/right_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="0" 
       android:gravity="right|center_vertical" 
       android:padding="5dip" 
       android:text="1.3" /> 
     </TableRow> 
    </TableLayout> 
</ScrollView> 

</LinearLayout> 
</FrameLayout> 

Proszę dać mi znać status.

0

Miałem podobny problem z natywnymi reklamami AdMob. Chciałem umieścić reklamę w widoku recyklera. Przewijanie, interfejs będzie zamarzał po kliknięciu reklamy natywnej, a przewijanie będzie kontynuowane dopiero po załadowaniu reklamy

Zrobiłem trochę czasu i okazało się, że loadAd() zajmie około 1400ms, kolejne wywołania loadAd() czasu spadł do 150ms, więc naprawiłem natywną reklamę zaraz po utworzeniu mojego fragmentu:

private static boolean preLoadAd = true; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_help, container, false); 
    cardsAdapter = new CardsAdapter(Cards.cards, this); 
    recyclerView = (RecyclerView) rootView.findViewById(R.id.card_collection); 

    //Pre-load ad to allow smoother scrolling 
    //First time loading a native ad takes 800-1500ms, afterwards around 150ms 
    if (preLoadAd) { 
     //only do this once 
     preLoadAd=false; 
     //add the task to the message cue to run after the help fragment has shown 
     recyclerView.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        CardVariations.createNativeAdViewHolder(recyclerView); 
       }catch(Exception e){e.printStackTrace();} 
      }},200L); 
    } 
    return rootView; 
} 
Powiązane problemy