2013-03-23 3 views
2

내 안드로이드 응용 프로그램에 광고를 구현하려고합니다. 나는 내 XML 레이아웃에 광고를 추가 할 때 메모리 누수가 의심되어이 게시물에 설명 된 접근 방법을 시도했다. - Admob Memory Leak - avoiding by using empty activity최근 활동에서 활동이 시작되지 않음 : - Android

광고가 렌더링되고 내 앱 화면 사이에있는 경우 클릭하면 문제가되지 않는다. 실수하고 내가 최근 응용 프로그램을 선택 광산에 가면 장치의 홈 버튼, 나는 오류를 얻을 : - 내 AdMobActivity의

03-22 22:17:56.604: E/AndroidRuntime(27206): Caused by: java.lang.IllegalStateException: This activity should be created only once during the entire application life 
03-22 22:17:56.604: E/AndroidRuntime(27206): at com.xyz.watch.AdMobActivity.<init>(AdMobActivity.java:16) 
03-22 22:17:56.604: E/AndroidRuntime(27206): at java.lang.Class.newInstanceImpl(Native Method) 
03-22 22:17:56.604: E/AndroidRuntime(27206): at java.lang.Class.newInstance(Class.java:1409) 
03-22 22:17:56.604: E/AndroidRuntime(27206): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
03-22 22:17:56.604: E/AndroidRuntime(27206): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
03-22 22:17:56.604: E/AndroidRuntime(27206): ... 11 more 
03-22 22:17:56.684: W/System.err(27206): java.io.FileNotFoundException: /data/plog.log (Permission denied) 

발사 모드는 이유 먹으 렴 그래서 아마 singleInstance입니다. 이 기능이 작동하려면 어떻게해야합니까?

업데이트 : - 내 코드를 처음 시작 활동 내부

(MainActivity)

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    DatabaseAdapter databaseAdapter = new DatabaseAdapter(
      getApplicationContext()); 
    databaseAdapter.open(); 
    databaseAdapter.close(); 
} 

    @Override 
protected void onResume() { 
    super.onResume(); 

    if (AdMobActivity.AdMobMemoryLeakWorkAroundActivity == null) { 
     Log.i("CHAT", "starting the AdMobActivity"); 
     AdMobActivity.startAdMobActivity(this); 
    } 
} 

AdMobActivity : -

public final class AdMobActivity extends Activity { 

public static AdMobActivity AdMobMemoryLeakWorkAroundActivity; 

public AdMobActivity() { 
    super(); 
    if (AdMobMemoryLeakWorkAroundActivity != null) { 
     throw new IllegalStateException("This activity should be created only once during the entire application life"); 
    } 
    AdMobMemoryLeakWorkAroundActivity = this; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.i("CHAT", "in onCreate - AdMobActivity"); 
    finish(); 
} 

public static final void startAdMobActivity(Activity activity) { 
    Log.i("CHAT", "in startAdMobActivity"); 
    Intent i = new Intent(); 
    i.setComponent(new ComponentName(activity.getApplicationContext(), AdMobActivity.class)); 
    activity.startActivity(i); 
} 

}

라인 없음. 16은

throw new IllegalStateException("This activity should be created only once during the entire application life"); 
+0

혹시 onResume 메소드 내부에서 Admob 관련 코드를 이동하려 했습니까? –

+0

없고 .. 내가 그렇게 해보자 .. –

+0

더 ... 여전히 같은 오류 –

답변

0

이 코드를 살펴보십시오. 나는 이것을 사용했다. 나는 메모리 누출에 직면하지 않았다. 이 당신을 도울 것입니다

http://jmsliu.com/209/add-google-admob-in-android-application.html

희망.

이 코드를 사용해보십시오. 이것은 XML 레이아웃에 통합되지 않습니다. 문법적으로 프로하라.

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.LinearLayout; 
import android.widget.LinearLayout.LayoutParams; 

import com.google.ads.*; 

public class AdmobExample extends Activity { 
    /** Called when the activity is first created. */ 
    private AdView myAdView; 

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

     myAdView = new AdView(this, AdSize.BANNER, "youradmob id. "); 

     //get layoutView 
     LinearLayout rootView = (LinearLayout)this.findViewById(R.id.rootViewGroup); 
     LinearLayout.LayoutParams layoutParams = new LayoutParams(480, 75); 

     rootView.addView(myAdView, 0, layoutParams);   

     AdRequest re = new AdRequest(); 
     re.setGender(AdRequest.Gender.FEMALE); 
     //re.setTestDevices(testDevices); 
     //re.setTesting(testing) 

     myAdView.loadAd(re); 
    } 
} 
+0

안녕하세요. 이걸 시도해 보겠습니다. 이 예에서는 요청에 성별 정보를 보냅니다. 어떻게 지내세요? 사용자의 성별 정보를 얻을 수 있습니까? –

+0

여성으로 지정하는 중 ... – itsrajesh4uguys

관련 문제