2016-08-22 80 views
0

我想解决突然出现的日志异常。 我从来没有见过它,但是,我没有运行这个应用程序约5周,所以也许它从任何更新或新的东西。 这是我的类代码:泄露窗口com.android.internal.policy.impl

public class SplashScreen extends Activity { 

    // Splash screen timer 
    private static int SPLASH_TIME_OUT = 1000; 
    private static final int PLAY_SERVICES_RESOLUTION_REQUEST = 9000; 
    private static final String TAG = "SplashPush"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash_screen); 

     new Handler().postDelayed(new Runnable() { 

      /* 
      * Showing the splash screen for the selected time 
      */ 
      @Override 
      public void run() { 
       // Once the timer is over we will start the main activity 
       Intent i = new Intent(SplashScreen.this, ClientDriverMainScreen.class); 
       startActivity(i); 

       // close this activity 
       finish(); 
      } 
     }, SPLASH_TIME_OUT); 

     if (checkPlayServices()) { 
      Intent i = new Intent(this, RegistrationIntentService.class); 
      startService(i); 
     } 
    } 

     /** 
     * Check the device to make sure it has the Google Play Services APK. If 
     * it doesn't, display a dialog that allows users to download the APK from 
     * the Google Play Store or enable it in the device's system settings. 
     */ 
    private boolean checkPlayServices() { 
     GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
     int resultCode = apiAvailability.isGooglePlayServicesAvailable(this); 
     if (resultCode != ConnectionResult.SUCCESS) { 
      if (apiAvailability.isUserResolvableError(resultCode)) { 
       apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST) 
         .show(); 
      } else { 
       Log.i(TAG, "This device is not supported."); 
       finish(); 
      } 
      return false; 
     } 
     return true; 
    } 
} 

,但我不断收到一个例外:

活动activiteslogic.splash.SplashScreen已泄漏的窗口。

任何人都有线索或暗示要寻找什么?

完整的logcat:

08-22 12:41:03.609 1849-1849/zooz.ivmobs.com.zooz E/WindowManager: android.view.WindowLeaked: Activity activiteslogic.splash.SplashScreen has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{52860efc V.E..... R......D 0,0-1026,639} that was originally added here 
                    at android.view.ViewRootImpl.<init>(ViewRootImpl.java:346) 
                    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248) 
                    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
                    at android.app.Dialog.show(Dialog.java:286) 
                    at activiteslogic.splash.SplashScreen.checkPlayServices(SplashScreen.java:65) 
                    at activiteslogic.splash.SplashScreen.onCreate(SplashScreen.java:48) 
                    at android.app.Activity.performCreate(Activity.java:5231) 
                    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
                    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148) 
                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
                    at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                    at android.os.Handler.dispatchMessage(Handler.java:102) 
                    at android.os.Looper.loop(Looper.java:136) 
                    at android.app.ActivityThread.main(ActivityThread.java:5001) 
                    at java.lang.reflect.Method.invokeNative(Native Method) 
                    at java.lang.reflect.Method.invoke(Method.java:515) 
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                    at dalvik.system.NativeStart.main(Native Method) 
+0

添加您的完整logcat? –

+0

尝试更改apiAvailability.isGooglePlayServicesAvailable(youractivity.this); –

回答

0

用来改变的背景下这youractivity.this

if (checkPlayServices()) { 
     Intent i = new Intent(SplashScreen.this, RegistrationIntentService.class); 
     startService(i); 
    } 




private boolean checkPlayServices() { 
    GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
    int resultCode = apiAvailability.isGooglePlayServicesAvailable(SplashScreen.this); 
    if (resultCode != ConnectionResult.SUCCESS) { 
     if (apiAvailability.isUserResolvableError(resultCode)) { 
      apiAvailability.getErrorDialog(SplashScreen.this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST) 
        .show(); 
     } else { 
      Log.i(TAG, "This device is not supported."); 
      finish(); 
     } 
     return false; 
    } 
    return true; 
} 
0

您可以在checkPlayServices()你的意图,并启动它,当你与谷歌的东西做。

private boolean checkPlayServices() { 
     GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
     int resultCode = apiAvailability.isGooglePlayServicesAvailable(this); 
     if (resultCode != ConnectionResult.SUCCESS) { 
      if (apiAvailability.isUserResolvableError(resultCode)) { 
       apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST) 
         .show(); 
      } else { 
       Log.i(TAG, "This device is not supported."); 

       // start new activity when you are done here. 
       Intent i = new Intent(SplashScreen.this, ClientDriverMainScreen.class); 
       startActivity(i); 

       // close this activity 
       finish(); 
      } 
      return false; 
     } 
     return true; 
    }