如何修复 "Activity has leaked ServiceConnection net.openid.appauth.browser.CustomTabManager@41fb56d0 that was originally bound here" 错误
How to fix "Activity has leaked ServiceConnection net.openid.appauth.browser.CustomTabManager$1@41fb56d0 that was originally bound here" error
我正在设置我的 android 应用程序以使用身份验证,并且我正在关注 Android 的 AppAuth 文档。到目前为止,我已经能够连接并向身份服务器发出请求,并得到一个响应,其中包含我在请求中发送的大部分数据等等。我应该用我的代码交换访问令牌。这是我的问题。我实际上是在 github 页面 https://github.com/openid/AppAuth-Android 上复制并粘贴代码,但它因上述错误而崩溃。我对 android 比较陌生,这是我的第一个问题,如果我没有很好地提出我的问题,请放轻松。谢谢。
Android Studio 表示导致此错误的代码是 "authService.performTokenRequest()"。我环顾四周,有些人通过在 "onDestroy()" 中调用 "authService.dispose()" 解决了这个问题,但这也会因 "An error occured while executing doInBackground()" 而崩溃。下面是导致错误的代码。
authService.performTokenRequest(
resp.createTokenExchangeRequest(),
new AuthorizationService.TokenResponseCallback() {
@Override public void onTokenRequestCompleted(
TokenResponse resp, AuthorizationException ex) {
if (resp != null) {
// exchange succeeded
} else {
// authorization failed, check ex for more details
}
}
});
在我的 "onCreate()" 中,我是这样称呼它的。
AuthorizationResponse resp = AuthorizationResponse.fromIntent(getIntent());
AuthorizationException ex = AuthorizationException.fromIntent(getIntent());
authState = new AuthState(resp, ex);
authorizationService = new AuthorizationService(this);
authorizationService.performTokenRequest(
resp.createTokenExchangeRequest(),
new AuthorizationService.TokenResponseCallback() {
@Override public void onTokenRequestCompleted(
TokenResponse resp, AuthorizationException ex) {
authState.update(resp, ex);
if (resp != null) {
// exchange succeeded
Log.e("authstate",authState.getAccessToken());
} else {
// authorization failed, check ex for more details
}
}
});
您可以在onDestroy() 中销毁您的authService。
例如你有
AuthorizationService mAuthService = new AuthorizationService(context);
@Override
protected void onDestroy() {
mAuthService.dispose();
mAuthService = null;
}
我正在设置我的 android 应用程序以使用身份验证,并且我正在关注 Android 的 AppAuth 文档。到目前为止,我已经能够连接并向身份服务器发出请求,并得到一个响应,其中包含我在请求中发送的大部分数据等等。我应该用我的代码交换访问令牌。这是我的问题。我实际上是在 github 页面 https://github.com/openid/AppAuth-Android 上复制并粘贴代码,但它因上述错误而崩溃。我对 android 比较陌生,这是我的第一个问题,如果我没有很好地提出我的问题,请放轻松。谢谢。
Android Studio 表示导致此错误的代码是 "authService.performTokenRequest()"。我环顾四周,有些人通过在 "onDestroy()" 中调用 "authService.dispose()" 解决了这个问题,但这也会因 "An error occured while executing doInBackground()" 而崩溃。下面是导致错误的代码。
authService.performTokenRequest(
resp.createTokenExchangeRequest(),
new AuthorizationService.TokenResponseCallback() {
@Override public void onTokenRequestCompleted(
TokenResponse resp, AuthorizationException ex) {
if (resp != null) {
// exchange succeeded
} else {
// authorization failed, check ex for more details
}
}
});
在我的 "onCreate()" 中,我是这样称呼它的。
AuthorizationResponse resp = AuthorizationResponse.fromIntent(getIntent());
AuthorizationException ex = AuthorizationException.fromIntent(getIntent());
authState = new AuthState(resp, ex);
authorizationService = new AuthorizationService(this);
authorizationService.performTokenRequest(
resp.createTokenExchangeRequest(),
new AuthorizationService.TokenResponseCallback() {
@Override public void onTokenRequestCompleted(
TokenResponse resp, AuthorizationException ex) {
authState.update(resp, ex);
if (resp != null) {
// exchange succeeded
Log.e("authstate",authState.getAccessToken());
} else {
// authorization failed, check ex for more details
}
}
});
您可以在onDestroy() 中销毁您的authService。 例如你有
AuthorizationService mAuthService = new AuthorizationService(context);
@Override
protected void onDestroy() {
mAuthService.dispose();
mAuthService = null;
}