17

tôi sử dụng AdWhirl và Admob trong một trong những ứng dụng của tôi, sau khi phát hành, chúng tôi nhận được rất nhiều lỗi từ AdWhirl, và Nó sinh sản một cách dễ dàng như thế này:AdWhirl gây java.lang.NullPointerException sau khi mạng shutdown

Sau khi quảng cáo xuất hiện , Tôi tắt wifi và đợi thời gian chờ quảng cáo, sau đó nhấn nút quay lại để thoát ứng dụng.

thì lỗi appear.the src có thể tải về từ this .và các ngoại lệ là như thế này:.

05-17 11:00:13.265: E/AndroidRuntime(12482): java.lang.RuntimeException: Unable to destroy activity {me.test.admob/me.test.admob.AdWhirlTestActivity}: java.lang.NullPointerException 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3112) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3130) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.access$1200(ActivityThread.java:123) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1180) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.os.Looper.loop(Looper.java:137) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.main(ActivityThread.java:4424) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at java.lang.reflect.Method.invokeNative(Native Method) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at java.lang.reflect.Method.invoke(Method.java:511) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at dalvik.system.NativeStart.main(Native Method) 
05-17 11:00:13.265: E/AndroidRuntime(12482): Caused by: java.lang.NullPointerException 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.webkit.WebView.requestFocus(WebView.java:7650) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2110) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:2154) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.requestFocus(ViewGroup.java:2113) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.View.requestFocus(View.java:5323) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewRootImpl.clearChildFocus(ViewRootImpl.java:2200) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.clearChildFocus(ViewGroup.java:669) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3591) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3561) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.view.ViewGroup.removeView(ViewGroup.java:3509) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:998) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:1843) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:314) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.Activity.performDestroy(Activity.java:4629) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1079) 
05-17 11:00:13.265: E/AndroidRuntime(12482): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3099) 
05-17 11:00:13.265: E/AndroidRuntime(12482): ... 11 more 

Sau khi thử nghiệm của tôi, tôi thấy ngoại lệ này chỉ xuất hiện khi sử dụng AdWhirl với ListFragment trong ViewPager, nếu Tôi chỉ sử dụng trong ListFragment hoặc sử dụng Fragment trong ViewPager, nó hoạt động bình thường. Nhưng tôi vẫn muốn biết điều gì là sai, và làm thế nào tôi có thể giải quyết ngoại lệ này.

Mọi câu trả lời đều sẽ được đánh giá cao.

+0

Bạn có chắc chắn rằng bạn gọi phá hủy trên quảng cáo admob của mình trong onPause hoặc onDestroy không? Trên thực tế có vẻ như bạn đang làm điều gì đó sai trong onDestroy() có thể. Bạn đã ghi đè lênDestroy? Nếu có, hãy đăng nó. – LuxuryMode

+0

không, tôi chỉ cần thoát mà không cần làm gì cả. các src có thể được tìm thấy trong https://github.com/notenking/AdWhirlException/blob/master/src/me/test/admob/AdWhirlTestActivity.java – notenking

Trả lời

1
  1. chắc chắn rằng bạn xử lý AdWhirl trong onDestory của bạn() Phương pháp
  2. sử dụng một catch để bắt NullPointer, liên hệ với devlopers và hy vọng rằng họ sẽ sửa lỗi này (nếu nó là một lỗi)
+1

Lỗi này có thể được loại bỏ bằng nhiều cách mà không thử bắt, nhưng tôi muốn biết phương pháp tốt nhất để loại bỏ nó Hoặc những lý do thực sự dẫn đến điều này. – notenking

0

Allways kiểm tra nội dung của đối tượng mà mang conection với dịch vụ

if(conection !=null){ 
execute(); 
} 

vì bạn sử dụng một WebView luôn kiểm tra xem điện thoại conection của bạn nằm trên trước khi thực hiện 01.này nên dừng các nullpointer

thật khó để đưa ra một cái nhìn sâu sắc hơn mà không cần một ví dụ về mã của bạn

nhưng bạn có thể kiểm tra bằng cách sử dụng quản lý kết nối xuống dưới là một ví dụ làm thế nào để kiểm tra xem có wifi

public boolean isOnWifi(Context context) { 
    ConnectivityManager connManager = (ConnectivityManager) context 
      .getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo mWifi = connManager 
      .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    if (mWifi.isConnected()) { 
     return true; 
    } 

    return false; 
} 

để xem nếu có một kết nối di động chỉ cần thay đổi ConnectivityManager.TYPE_WIFI để ConnectivityManager.TYPE_MOBILE

+0

Làm thế nào để đặt một số nỗ lực vào câu trả lời của bạn? Sửa lỗi chính tả và đặc biệt cung cấp mã mà ít nhất không có lỗi cú pháp ?! – WarrenFaith

0

Hãy tìm một hàm nơi AdMob hoặc AdWhirl là t rying để thay đổi các banner quảng cáo sau mỗi vài giây hoặc vài phút. Ngoại lệ này xảy ra vì không có trình xử lý ngoại lệ nào trong hàm đó. Sau khi bạn tắt wifi của bạn, một số mã đang mong đợi một kết nối internet hoạt động đúng cách, nhưng không có kết nối nữa. Tốt nhất hãy thử điều này:

  1. Chuyển đến chức năng nơi biểu ngữ quảng cáo được thay đổi sau mỗi giây/phút.
  2. Ở đó bạn phải bao quanh mã bằng trình xử lý ngoại lệ, ví dụ: cố gắng bắt. Và bắt NullPointerException.
Các vấn đề liên quan