版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
型AAAndroid2.3AAndroid4.4Aframework义广播,增加listener回调方简 目的和适用范 定义、缩写和术 参考资 修改目 接口定 应用启动.....................................................................................................................................应用退出.....................................................................................................................................listener回调方式的集成方法 验证方 1、0.31.0计,去除不合理的广播机制,提高整体系统的响应性能,从K7项目开始以listener回调的方式代替之 为了分析设备上应用程序的使用情况,Framework层需要调用应用层的listener回调函数activity被createdlistenerNN应用启动时间Java中的longY启动类型,1:从launcher0:…+import+importfinalintstartActivityMayWait(IApplicationThreadcaller,intStringcallingPackage,Intentintent,StringresolvedType,IBinderresultTo,StringresultWho,intreqode,intstartFlags,StringprofileFile,ParcelFileDescriptorprofileFd,WaitResultoutResult,Configurationconfig,Bundleoptions,intuserId){//CollectinformationaboutthetargetoftheActivityInfoaInfo=resolveActivity(intent,resolvedType,startFlags,profileFile,profileFd,userId);/*[lenovo_fw,liuhj6,e2e_app_usage_statics],appusagestatiticsporting,add*/if((aInfo!=null)&&(aInfo.packageName!=null)&&(aI!=null)){Set<String>categories=intent.getCategories();intflags=intent.getFlags();intstartType=if((categories==||!categories.contains(Intent.CATEGORY_HOME)){if((flags&(Intent.FLAG_ACTIVITY_NEW_TASK&&Intent.ACTION_MAIN.equals(intent.getAction())&&(categories!=null)&&categories.contains(Intent.CATEGORY_LAUNCHER)){startType=1;//SmartAPI.START_PARA_LAUNCHER;}if(aInfo!=null&&aInfo.packageName!=null)longdate=Intentintent1=newintent1.putExtra("Type",1);intent1.putExtra("Package",aInfo.packageName);intent1.putExtra("Time",date);intent1.putExtra("Where",startType);
if(ActivityManagerNative.isSystemReady()){Slog.v(TAG,"sendsmartintentfornewactivity"+Where
Slog.v(TAG,"notifyappswitchfornewactivity"+finalStringpackageName=aInfo.packageName;finalinttype=startType;Threadthread=newThread(){@Overridepublicvoidrun(){}}}}} listenerNN应用启动时间Java中的longY退出类型,0:1:privatefinalvoidhandleAppDiedLocked(ProcessRecordapp,booleanrestarting,booleanallowRestart){/*[lenovo_fw,liuhj6,e2e_app_usage_statics],appusagestatiticsporting,add*/if(mProcessesReady){if(!=null&&.packageName!=null)intendType=if(app.crashing)endType=}if(.packageName!=null)longdate=Intentintent=newintent.putExtra("Type",0);intent.putExtra("Package",.packageName);intent.putExtra("Time",date);intent.putExtra("Flag",endType);Slog.w(TAG,"sendsmartintentpackageName="+.packageName);Slog.w(TAG,"notifyappswitchquitpackageName="+.packageName);finalStringpackageName=.packageName;finalinttype=Threadthread=newThread(){@Overridepublicvoidrun()notifyAppSwitch(packageName,false,}}}}}2.3listener回调方式的集成方1、在./frameworks/base/Android.mkLOCAL_SRC_FILES+=2、在./frameworks/base/core/java/android/app/ActivityManager.java中增加:publicvoidregisppStaistener(String[]pkgs,finalAppStaistenerl){tryActivityManagerNative.getDefault().regisppStaistener(pkgs,newIAppStaistener.Stub(){publicvoidappStarted(Stringname,longwhen,intstartType)throwsRemoteException{l.appStarted(name,when,startType);}publicvoidappQuit(Stringname,longwhen,intquitType)throwsRemoteException{l.appQuit(name,when,quitType);}}catch(RemoteExceptione){}}
publicbooleanonTransact(intcode,Parceldata,Parcelreply,intflags)throwsRemoteException{switch(code)
String[]pkgs=data.readStringArray(); istenerobserver=IAppSta istener(pkgs,observer);return}classActivityManagerimplements{…publicvoidregis istener(String[]pkgs,IAppSta istenerl)throwsRemoteException{Parceldata=Parcel.obtain();Parcelreply=Parcel.obtain();data.writeStrongBinder(l!=null?l.asBinder():null);}}appsta…publicvoidregisppStaistener(String[]pkgs,IAppStaistenerl)throws…、 +importandroid.app.IAppStapublicfinalclassActivityManagerServiceextendsActivityManagerNativeimplementsWatchdog.Monitor,BatteryStatsImpl.BatteryCallback{finalRemoteCallbackList<IAppStaistener>mAppSta=new publicvoidregis istener(String[]pkgs,IAppSta istenerl){synchronized(mAppSta isteners){ isteners.register(l,}}voidnotifyAppSwitch(Stringpkg,booleanresumed,inttype){synchronized(mAppSta isteners){Slog.d(TAG,"notifyAppSwitchresumed:"+resumed+";pkg:" +pkg);if(pkg==null)return;try
finalintN=mAppSta for(inti=0;i<N;i++){longdate=System.currentTimeMillis();if(resumed){Slog.d(TAG,pkg+":resumed,notify isteners.getBroadcastItem(i).appStarted(pkg,date,}elseSlog.d(TAG,pkg+":pausedorcrashed,notifyapp");mAppStaisteners.getBroadcastItem(i).appQuit(pkg,date,type);}}}catch(RemoteExceptione)Slog.e(TAG,"FoundexceptioninnotifyAppSwitch:",}}}}12adblogcatV/ActivityManager(1052):notifyappswitchfornewactiv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度诗歌集打印承包合同
- 2024年度承包合同标的、工程款支付与工程质量2篇
- 二零二四年度建筑工程清包工劳务合同6篇
- 2024年度企业网络安全保障与维护合同3篇
- 2024年度医疗美容与居间服务合同2篇
- 2024年企业核心信息保密劳动协议版A版
- 二零二四年销售合同的销售指标与区域划分3篇
- 2024年度保险代理合同:规定保险代理商的责任与佣金分配3篇
- 2024年度物业服务合同标的详细说明
- 2024年度股权投资合同:某投资公司对某初创企业进行Pre-A轮投资3篇
- 长沙医学院《病原生物学》2022-2023学年第一学期期末试卷
- 服装店合伙协议书
- 颈椎前路零切迹手术
- PRP注射治疗膝关节炎
- 小区垃圾清运管理规章制度模版(2篇)
- 6S精益实战手册
- 古代小说戏曲专题-形考任务2-国开-参考资料
- 给水排水工程结构设计规范
- 帕金森病医学必看试题带详细解析答案
- 公司安全检查流程图(共2页)
- 第二节岩石的水理性质
评论
0/150
提交评论