一种启动组件的界面的方法及装置的制造方法_2

文档序号:9326727阅读:来源:国知局
oid操作系统都会触发该应用程序中的applicat1n类的方法,通过该applicat1n类的方法发送启动请求给Android操作系统,Android操作系统会接收启动请求后,对该启动请求执行一系列的检验,在检验成功后,通知应用程序通过newActivity方法生成一 Activity的实例,即ActivityThread实例。其中,newActivity方法为Applicat1n 类中的 mBase 变量的 mApplicat1n 中的 mPackagelnfo 变量的 mMainThread变量的mlnstrumentat1n变量中的方法,对应Activity的创建逻辑,即:
[0044]mlnstrumentat1n-----> newActivity0
[0045]本发明实施例中,ActivityThread实例管理所有用户接口(UI,User Interface)事件,Android操作系统通过ActivityThread实例控制Activity的状态。其中,Activity的状态包括:创建状态(onCreate方法)、启动状态(onStart方法)、重启动状态(onRestart方法)、显示(运行)状态(onResume方法)、暂停状态(onPause方法)、停止状态(onStop方法)以及销毁状态(onDestory方法)。
[0046]关于判断当前启动的Activity是否为组件的Activity,且该组件的Activity是否为第一次启动为公知技术,在此略去详述。
[0047]步骤102,如果当前启动的Activity为第一次启动的组件的Activity,利用反射机制,将Applicat1n类中的mBase变量的mPackagelnfo变量的mMainThread变量的mlnstrumentat1n变量替换为所述组件的Activity的类名表示的变量,并设置所述组件的Activity的类名表示的变量的父类与所述mlnstrumentat1n变量相同;
[0048]本步骤中,变量是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问。
[0049]较佳地,反射机制为JAVA反射机制。设置所述组件的Activity的类名表示的变量的父类与所述mlnstrumentat1n变量相同是依据Activity的启动机制,以确保变量替换的成功,即创建继承于所述应用程序的ActivityThread实例的Instrumentat1n类的子类,该子类为组件的Activity的类名表示的变量。
[0050]作为一可选实施例,利用反射机制,将Applicat1n类中的mBase变量的mPackagelnfo变量的mMainThread变量的mlnstrumentat1n变量替换为所述组件的Activity的类名表示的变量包括:
[0051 ] Al I,利用JAVA反射机制,将应用程序的appl icat1n类中的mBase变量的mApplicat1n 置空;
[0052]本步骤中,通过将应用程序的applicat1n类中的mBase变量的mApplicat1n置空,可以在启动组件时,组件的Activity查询到已经存在applicat1n类,从而避免直接将已存在的applicat1n类与组件的Activity进行关联,导致与组件的Activity进行关联的为应用程序的applicat1n类,不能实现在组件的applicat1n类中进行自定义逻辑。
[0053]本发明实施例中,由于applicat1n类会在应用程序启动时去触发该applicat1n类的方法,也就是说,应用程序一旦启动,应用程序的applicat1n类就会执行内部方法。因而,applicat1n类不会被多次调用,在创建applicat1n逻辑时,启动的Activity (组件的Activity或应用程序的Activity)首先会检查之前有没有创建过applicat1n类,如果applicat1n类中的mBase变量的mApplicat1n不为空,表示创建过applicat1n类,则将该创建的applicat1n类与新创建的Activity进行关联,如果新创建的Activity为组件的Activity,为了加入组件的自定义逻辑,需要将应用程序的applicat1n类替换成组件的applicta1n类,而本发明实施例的方法是通过将applicat1n类中相应参数置空。其中,Activity拥有获取applicat1n类的功能。如果applicat1n类中的mBase变量的mApplicat1n为空,表示未创建过applicat1n类,则创建一新applicat1n类,并触发该新applicat1n类的onCreate方法(启动方法)。
[0054]本发明实施例中,将应用程序的applicat1n类中的mBase变量的mApplicat1n置空的操作如下:
[0055]CustomInstrumentat1n 实 f歹Ij----> 置空-----> mlnstrumentat1n---->
newActivity。
[0056]作为一可选实施例,在将应用程序的applicat1n类中的mBase变量的mApplicat1n置空之前,该方法进一步包括:
[0057]保存所述Applicat1n 类中的 mBase 变量的 mApplicat1n 中的 mPackagelnfo 变量的 mMainThread 变量的 mlnstrumentat1n 变量。
[0058]本步骤中,通过保存应用程序的Applicat1n类中的变量,可以在后续由组件的Activity切换至应用程序的Activity时,再次进行变量替换以使切换后的应用程序的Activity能够正常运行。
[0059]A12,判断当前启动的Activity检查所述mApplicat1n是否置空,如果置空,仓1J建一新 applicat1n 类;
[0060]本步骤中,由于当前启动的Activity为组件的Activity,因而,创建的新applicat1n类为组件的Activity的applicat1n类。当应用程序检查到mApplicat1n为空的情况下,仓Il建一新applicat1n类,可以导致后续CustomInstrumentat1n实例中的newApplicat1n方法被触发,该新applicat1n类为需要创建的组件的applicat1n类,操作如下:
[0061]CustomInstrumentat1n 实例----> newAppl icat1n----> 仓丨J 建组件的
applicat1n 类。
[0062]这样,在后续流程中,就可以将组件的applicat1n类与组件关联起来。
[0063]本发明实施例中,如果Activity检查mApplicat1n没有置空,即组件的Activity查询到已经存在applicat1n类(即存在未置空的mApplicat1n,也就是现有技术中应用程序的appI icat1n类),直接将已存在的appI icat1n与组件的Activity进行关联,从而在后续应用中,Andro i d操作系统触发该应用程序中的app I i cat i on类的方法,则后续对应Activity的创建回调逻辑为:
[0064]mlnstrumentat1n------> calIActivityOnCreate0
[0065]A13,将新 Applicat1n 类中的 mBase 变量的 mPackagelnfo 变量的 mMainThread变量的mlnstrumentat1n变量替换为所述组件的Activity的类名表示的变量;
[0066]本步骤中,通过分析android操作系统源码,采用反射机$1」,将分析得到的android操作系统源码中对应的应用程序Applicat1n类中的mBase变量的mPackagelnfo变量的mMainThread变量的mlnstrumentat1n变量替换为子类(CustomInstrumentat1n)。较佳地,采用JAVA反射机制,当然,实际应用中,也可以采用能够完成该功能的其他反射机制。JAVA反射机制是动态获取信息以及动态调用对象的方法的功能,即在运行状态中,对于任意一个类,都能够知道该类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。其中,类是JAVA程序的组织单位,任何的JAVA语句,都要写在类文件中。
[0067]本发明实施例中,通过将mlnstrumentat1n变量替换为所述组件的Activity的类名表示的变量,这样,可以通过替换的变量中包含的各方法进行组件所需的逻辑编程,从而可以通过该组件的Activity的applicat1n类的方法中,添加组件所需的逻辑,降低使用和维护组件的代价,同时能够有效提升组件开发效率。
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1