From fa298f4a8309a300d1947b13b6a84c5b7a8db983 Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Fri, 16 Dec 2016 14:16:41 +0800 Subject: [PATCH] removed unused account declaration fixed browser sign in memory leak --- twidere/src/main/AndroidManifest.xml | 12 +++++++++--- .../twidere/model/util/AccountUtils.java | 6 +++--- .../twidere/activity/BrowserSignInActivity.kt | 19 ++++++++++++------- .../fragment/AccountsDashboardFragment.kt | 2 +- .../twidere/task/UpdateAccountInfoTask.kt | 4 ++-- ...yout_account_dashboard_profile_banner.xml} | 2 ++ 6 files changed, 29 insertions(+), 16 deletions(-) rename twidere/src/main/res/layout/{layout_account_dashboard_profile_image.xml => layout_account_dashboard_profile_banner.xml} (70%) diff --git a/twidere/src/main/AndroidManifest.xml b/twidere/src/main/AndroidManifest.xml index fe0a44aea..e5f665a2a 100644 --- a/twidere/src/main/AndroidManifest.xml +++ b/twidere/src/main/AndroidManifest.xml @@ -41,9 +41,15 @@ - - - + + + diff --git a/twidere/src/main/java/org/mariotaku/twidere/model/util/AccountUtils.java b/twidere/src/main/java/org/mariotaku/twidere/model/util/AccountUtils.java index a5bee993b..ae8d51397 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/model/util/AccountUtils.java +++ b/twidere/src/main/java/org/mariotaku/twidere/model/util/AccountUtils.java @@ -6,7 +6,6 @@ import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import org.apache.commons.lang3.StringUtils; import org.mariotaku.twidere.R; import org.mariotaku.twidere.annotation.AccountType; import org.mariotaku.twidere.annotation.AuthTypeInt; @@ -90,9 +89,10 @@ public class AccountUtils { return details; } - public static Account findByScreenName(AccountManager am, String screenName) { + @Nullable + public static Account findByScreenName(AccountManager am, @NonNull String screenName) { for (Account account : getAccounts(am)) { - if (StringUtils.equalsIgnoreCase(UserKey.valueOf(account.name).getId(), screenName)) { + if (screenName.equalsIgnoreCase(AccountExtensionsKt.getAccountUser(account, am).screen_name)) { return account; } } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/BrowserSignInActivity.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/BrowserSignInActivity.kt index 026d81cd8..cc103e685 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/activity/BrowserSignInActivity.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/activity/BrowserSignInActivity.kt @@ -55,6 +55,7 @@ import org.mariotaku.twidere.util.OAuthPasswordAuthenticator import org.mariotaku.twidere.util.webkit.DefaultWebViewClient import java.io.IOException import java.io.StringReader +import java.lang.ref.WeakReference @SuppressLint("SetJavaScriptEnabled") class BrowserSignInActivity : BaseActivity() { @@ -190,15 +191,17 @@ class BrowserSignInActivity : BaseActivity() { } - internal class GetRequestTokenTask(private val activity: BrowserSignInActivity) : AsyncTask>() { + internal class GetRequestTokenTask(activity: BrowserSignInActivity) : AsyncTask>() { + private val activityRef: WeakReference private val apiConfig: CustomAPIConfig init { - val intent = activity.intent - apiConfig = intent.getParcelableExtra(EXTRA_API_CONFIG) + activityRef = WeakReference(activity) + apiConfig = activity.intent.getParcelableExtra(EXTRA_API_CONFIG) } override fun doInBackground(vararg params: Any): SingleResponse { + val activity = activityRef.get() ?: return SingleResponse(exception = InterruptedException()) if (isEmpty(apiConfig.consumerKey) || isEmpty(apiConfig.consumerSecret)) { return SingleResponse() } @@ -206,16 +209,17 @@ class BrowserSignInActivity : BaseActivity() { val endpoint = MicroBlogAPIFactory.getOAuthSignInEndpoint(apiConfig.apiUrlFormat, apiConfig.isSameOAuthUrl) val auth = OAuthAuthorization(apiConfig.consumerKey, apiConfig.consumerSecret) - val oauth = newMicroBlogInstance(activity, endpoint, - auth, true, null, TwitterOAuth::class.java) - return SingleResponse(oauth.getRequestToken(TwidereConstants.OAUTH_CALLBACK_OOB), null, Bundle()) + val oauth = newMicroBlogInstance(activity, endpoint, auth, true, null, + TwitterOAuth::class.java) + return SingleResponse(oauth.getRequestToken(TwidereConstants.OAUTH_CALLBACK_OOB)) } catch (e: MicroBlogException) { - return SingleResponse(null, e, Bundle()) + return SingleResponse(exception = e) } } override fun onPostExecute(result: SingleResponse) { + val activity = activityRef.get() ?: return activity.setLoadProgressShown(false) if (result.hasData()) { val token = result.data!! @@ -234,6 +238,7 @@ class BrowserSignInActivity : BaseActivity() { } override fun onPreExecute() { + val activity = activityRef.get() ?: return activity.setLoadProgressShown(true) } diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt index 368413181..b9c2a2b72 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/fragment/AccountsDashboardFragment.kt @@ -163,7 +163,7 @@ class AccountsDashboardFragment : BaseSupportFragment(), LoaderCallbacks \ No newline at end of file