首页 文章

Activilty已经泄露了最初添加的窗口com.android.internal.policy.impl.PhoneWindow$DecorView@42acff18

提问于
浏览
0

我使用LiveSDK for Onedrive登录.it正在运行,但在标志页面和授权页面上显示旋转设备上的警告 .

Activilty泄露了最初添加的窗口com.android.internal.policy.impl.PhoneWindow$DecorView@42acff18 ......

代码如下

class SigninActivity extends Activity implements LiveAuthListener {
private LiveAuthClient signinauth;
public LiveConnectClient client;
private boolean signin = false;
public static final String[] SCOPES = {
        "wl.signin",
        "wl.basic",

};

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

@Override
public void onResume() {
    super.onResume();
    if (this.signinauth == null) {
        this.signinauth = new LiveAuthClient(this, LiveSdkContants.CLIENT_ID);
        this.signinauth.login(this, Arrays.asList(SCOPES), this);
    }
    if (signin) {
        System.out.println("Authorization Success");
        finish();
    }
}
public void onDestroy() {
    super.onDestroy();

}
public void onAuthComplete(LiveStatus status, LiveConnectSession session, Object userState) {
    if (status == LiveStatus.CONNECTED ) {
        System.out.println("Connected");
        signin = true;
        client = new LiveConnectClient(session);
        finish();
    } else {
        client = null;
        signin = false;
        finish();
    }
}

        public void onAuthError(LiveAuthException exception, Object userState) {
    client = null;
    System.out.println("Connection failed");
    this.finish();
}

我怎么能解决这个问题?

Activity泄漏了最初添加到android.view.ViewRootImpl . (ViewRootImpl.java:402)android.view.WindowManagerImpl.addView(WindowManagerImpl.java)的窗口com.android.internal.policy.impl.PhoneWindow$DecorView@41d3cf88 . :311)android.view.WindowManagerImpl上的android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224)android.view.Window上的$ CompatModeWrapper.addView(WindowManagerImpl.java:149)$ LocalWindowManager.addView(Window.java: 554)在android.app.Dialog.show(Dialog.java:277)com.microsoft.live.AuthorizationRequest.execute(AuthorizationRequest.java:344)com.microsoft.live.LiveAuthClient.login(LiveAuthClient.java:504) )com.microsoft.live.LiveAuthClient.login(LiveAuthClient.java:427)at com.onedrive.SigninActivity.onResume(SigninActivity.java:303)at android.support.v4.app.Fragment.performResume(Fragment.java: 1832)在android.support.v4.app.FragingManagerImpl.moveToState(FragmentManager.java:995)的android.support.v4.app.FragmentManagerImpl.move在Android.support的android.support.v4.app.FragmentManagerImpl.dmatch上调整了android.support.v4.app.FragmentManagerImpl.dmatch上的ToState(FragmentManager.java:1138)(FragmentManager.java:1138) . 在android.support的android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1939)位于android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:436)的.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:447)位于android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java) :138)在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2606)android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2644)android.app.Activity.performResume(Activity.java:5293) android.app.A活动上的.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2130)$ 6.00(ActivityThread.java:140)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1227)android.os .andand.dispatchMessage(Handler.java:99)在android.os.Looper.loop(Looper.java:137)在android .app.ActivityThread.main(ActivityThread.java:4898)位于com.android.internal的java.lang.reflect.Method.invoke(Method.java:511)的java.lang.reflect.Method.invokeNative(Native Method) .os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1006)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)at dalvik.system.NativeStart.main(Native Method)

1 回答

  • 0

    当您的父级 Activity 已打开任何亲属 Foreground 时,会发生此异常 . 如果父活动停止,而没有关闭 Dialog ,则 Activity 将超出错误 .

    注意: (1) 您应该每次检入 onStop() 方法,如果您的对话框已打开,则首先关闭该对话框 .

    (2) 在您的活动上调用 finish() 之前,您应该每次打开时关闭Dialog

相关问题