当前位置: 首页 > 科技观察

一种提高Android应用进程存活率新方法(下)

时间:2023-03-13 21:01:47 科技观察

一一种种android应用应用进程存活率存活率新方法方法(下(mAuthenticator=newXXAuthenticator(this);returnmAuthenticator;}@OverridepublicIBinderonBind(Intentintent){returngetAuthenticator().getIBinder();}classXXAuthenticatorextendsAbstractAccountAuthenticator{privatefinalContextcontext;privateAccountManageraccountManager;publicXXAuthenticator(Contextcontext){super(上下文);this.context=上下文;accountManager.get(context);}@OverridepublicBundleaddAccount(AccountAuthenticatorResponseresponse,StringaccountType,StringauthTokenType,String[]requiredFeatures,Bundleoptions)throwsNetworkErrorException{//添加账号示例代码finalBundlebundle=newBundle();finalIntentintent=newAuthActivity.classtext);putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,response);bundle.putParcelable(AccountManager.KEY_INTENT,intent);returnbundle;}@OverridepublicBundlegetAuthToken(AccountAuthenticatorResponseresponse,Accountaccount,StringauthTokenType,Bundleoptions)throwsNetworkErrorException{//认证示例代码StringauthToken.AuthaccountManager(StringauthToken.AuthaccountManager(.account_token_type));//如果没有,可能会过期,重新注册if(TextUtils.isEmpty(authToken)){finalStringpassword=accountManager.getPassword(account);if(password!=null){//getnewtokenauthToken=account.name+password;}}//withoutpassword,needtosignagainfinalBundlebundle=newBundle();if(!TextUtils.isEmpty(authToken)){bundle.putString(AccountManager.KEY_ACCOUNT_NAME,account.name);bundle.putString(AccountManager.KEY_ACCOUNT_TYPE,account.type);bundle.putString(AccountManager.KEY_AUTHTOKEN,authToken);returnbundle;}//noaccountdataatall,needtodoasignfinalIntentintent=newIntent(context,AuthActivity.class);intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,response);intent.putExtra(AuthActivity.ARG_ACCOUNT_NAME,account.name);bundle.putParcelable(AccountManager.KEY_INTENT,intent);returnbundle;}@OverridepublicStringgetAuthTokenLabel(StringauthTokenType){//thrownewUnsupportedOperationException();returnull;}@OverridepublicBundleeditProperties(AccountAuthenticatorResponseresponse,StringaccountType){returnnull;}@OverridepublicBundleconfirmCredentials(AccountAuthenticatorResponseresponse,Accountaccount,Bundleoptions)throwsNetworkErrorException{returnnull;}@OverridepublicBundleupdateCredentials(AccountAuthenticatorResponseresponse,Accountaccount,StringauthTokenType,Bundleoptions)throwsNetworkErrorException{returnnull;}@OverridepublicBundlehasFeatures(AccountAuthenticatorResponseresponse,Accountaccount,String[]features)throwsNetworkErrorException{returnnull;}}}声明账户服务其中authenticator是:使用SyncAdapter的Account服务,通过AccountManager使用和申请Token主要是通过AccountManager.getAuthToken)系列方法,添加账户是通过AccountManager.addAccount)。通过AccountManager.getAccountsByType查询账号是否存在)Refs微信Android客户端后台保活经验分享AndroidLowMemoryKiller原理stackOverflowDualService方法自己写AndroidSyncAdapter写自己的AndroidAuthenticatorAndroid开发者android.accountsAccountManagerAbstractAccountAuthenticatorAccountAuthenticatorActivity创建一个SyncAdapterAndroid文章从底层保持进程不被杀(失败关闭)Android4.3+NotificationListenerServiceusingGoingmultiprocessonAndroid