第一篇:Android之activity总结——转自论坛
Android之activity总结——转自论坛
一、什么是activity Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道,二、activity生命周期
2011-11-20 20:23:32 上传 下载附件(64.6 KB)由图可知:
在一个Activity正常启动过程中,这些方法调用的顺序是onCreate-> onStart-> onResume;在Activity被kill掉的时候方法顺序是onPause-> onStop-> onDestroy,此为一个完整的Lifecycle。那么对于中断处理(比如电话来了),则是onPause-> onStop,恢复时onStart-> onResume;如果当前应用程序的是一个Theme为Translucent(半透明)或者Dialog 的Activity那么中断就是onPause ,恢复的时候onResume。
那么对于”Other app need memory”,就是我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证一些功能(比如电话),所以资源不足的时候也就有可能被kill掉。方法在系统中的作用及我们应该做什么:
onCreate:在这里创建界面,做一些数据的初始化工作;
onStart: 到这一步变成“用户可见不可交互”的状态;
onResume:变成和用户可交互的,(在Activity栈系统通过栈的方式管理这些Activity,即当前Activity在栈的最上端,运行完弹出栈,则回到上一个Activity);
onPause:到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降
低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。
onStop:变得不可见,被下一个activity覆盖了
onDestroy:这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果你有
一个Progress Dialog在线程中运行,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常。
onPause,onstop,onDestroy,三种状态下 activity都有可能被系统kill 掉。
三、Activity之间的通信
在 Android 中,不同的 Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在 Activity 之间传递消息。Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。
Intent负责对操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
在应用中,我们可以以两种形式来使用Intent:
直接Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。
间接Intent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。对于直接Intent,Android不需要去做解析,因为目标组件已经很明确。
Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。
四、Activity 的 Intent Filter
Intent Filter 描述了一个组件愿意接收什么样的 Intent 对象,Android 将其抽象为 android.content.IntentFilter 类。在 Android 的 AndroidManifest.xml 配置文件中可以通过
当使用 startActivity(intent)来启动另外一个 Activity 时,如果直接指定 intent 对象的 Component 属性,那么 Activity Manager 将试图启动其 Component 属性指定的 Activity。否则 Android 将通过 Intent 的其它属性从安装在系统中的所有 Activity 中查找与之最匹配的一个启动,如果没有找到合适的 Activity,应用程序会得到一个系统抛出的异常。这个匹配的过程如下:
2011-11-20 20:23:59 上传 下载附件(16.72 KB)
五、Activity的栈式管理
Android针对Activity的管理使用的是栈,就是说某一个时刻只有一个Activity处在栈顶,当这个Activity被销毁后,下面的Activity才有可能浮到栈顶,或者有一个新的Activity被创建出来,则旧的Activity就被压栈沉下去了。Activity是Android程序的表现层。程序的每一个显示屏幕就是一个Activity。正在运行的Activity处在栈的最顶端,它是运行状态的。
2011-11-20 20:26:09 上传 下载附件(23.43 KB)
当在程序中调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:它告诉
Activity Manager该Activity实例可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity,把原 Activity 压入到栈的第二层,从 Running 状态转到 Paused 状态。
六、Activity的加载模式standard、singleTop、singleTask、singleInstance(其中前两个是一组、后两个是一组),默认为standard standard:就是intent将发送给新的实例,所以每次跳转都会生成新的activity。singleTop:也是发送新的实例,但不同standard的一点是,在请求的Activity正好位于栈顶时(配置成singleTop的Activity),不会构造新的实例singleTask:和后面的singleInstance都只创建一个实例,当intent到来,需要创建设置为singleTask的Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接将intent发送给它。singleInstance:首先说明一下task这个概念,Task可以认为是一个栈,可放入多个Activity。比如启动一个应用,那么Android就创建了一个Task,然后启动这个应用的入口Activity,那在它的界面上调用其他的Activity也只是在这个task里面。那如果在多个task中共享一个Activity的话怎么办呢。举个例来说,如果开启一个导游服务类的应用程序,里面有个Activity是开启GOOGLE地图的,当按下home键退回到主菜单又启动GOOGLE地图的应用时,显示的就是刚才的地图,实际上是同一个Activity,实际上这就引入了singleInstance。singleInstance模式就是将该Activity单独放入一个栈中,这样这个栈中只有这一个Activity,不同应用的intent都由这个Activity接收和展示,这样就做到了共享。当然前提是这些应用都没有被销毁,所以刚才是按下的HOME键,如果按下了返回键,则无效。
七、Activity的跳转Activity跳转,无返回结果 这是最简单的Activity跳转方式。从一个Activity启动另一个Activity,直接startActivity(new Intent(当前Activity.this, 下一Activity.class))。
Activity跳转,返回数据/结果 需要返回数据或结果的,则使用startActivityForResult(Intent intent, int requestCode),requestCode的值是自定义的,用于识别跳转的目标Activity。跳转的目标Activity所要做的就是返回数据/结果,setResult(int resultCode)只返回结果不带数据,或者setResult(int resultCode, Intent data)两者都返回!而接收返回的数据/结果的处理函数是onActivityResult(int requestCode, int resultCode, Intent data),这里的requestCode就是startActivityForResult的requestCode,resultCode就是setResult里面的resultCode,返回的数据在data里面。
** 注意,在setResult后,要调用finish()销毁当前的Activity,否则无法返回到原来的Activity,就无法执行原来Activity的onActivityResult函数,看到当前的Activity没反应。
第二篇:Android之activity总结
Android之Activity总结
一、什么是Activity
Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道
二、Activity生命周期(生命周期方法)
由图可知,这些方法调用的顺序:
1.Activity正常启动:onCreate-> onStart-> onResume;
2.Activity被杀掉:onPause-> onStop-> onDestroy,此为一个完整的生命周期。3.中断处理:onPause-> onStop,恢复时onRestart-> onStart-> onResume;
4.如果当前Activity是半透明状态或者对话框状态:那么中断就是onPause ,恢复的时候onResume。
那么对于”Other app need memory”,就是我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证一些功能(比如电话),所以资源不足的时候也就有可能被kill掉。
方法在系统中的作用及我们应该做什么:
onCreate(创建):在这里创建界面,做一些数据的初始化工作;
onStart(可视状态): 到这一步变成“用户可见不可交互”的状态;
onResume(可交互状态):变成和用户可交互的,(在Activity栈系统通过栈的方式管理这些Activity,即当前Activity在栈的最上端,运行完弹出栈,则回到上一个Activity);
onPause(暂停状态):到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降
低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。
OnStop(停止状态):变得不可见,被下一个activity覆盖了。
onDestroy(杀死):这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉。
onPause,onstop,onDestroy,三种状态下 activity都有可能被系统杀掉。
Activity栈:Activity以栈的形式进行管理,后进先出的原则
三、Activity之间的通信
在 Android 中,不同的 Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在 Activity 之间传递消息。
Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。
Intent是一种运行时绑定(runtime binding)机制
Intent负责对操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
在应用中,我们可以以两种形式来使用Intent:
直接Intent(应用程序内部):指定了component(组建)属性的Intent。通过指定具体的组件类,通知应用启动对应的组件。
间接Intent(应用程序之间):没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。
对于直接Intent,Android不需要去做解析,因为目标组件已经很明确。
Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。Intent解析机制主要是通过查找已注册在AndroidManifest.xml(清单)中的所有IntentFilter(意图过滤器)及其中定义的Intent,最终找到匹配的Intent。
横屏时:onConfigurationChanged(配置改变))
横屏以及出现键盘键盘时生命周期部重新开始的方法: KeyboardHidHidden/orientation/screenSize 横屏显示:landscape 竖屏显示:portrait
四大组建:activity:活动、service:服务、content provider:内容提供商、broadcast receiver:广播收音机
Activity的所有面试题
什么是Activity? 请描述一下Activity 生命周期?
两个Activity之间跳转时必然会执行的是哪几个方法?
你后台的Activity被系统 回收怎么办?如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?
如何退出Activity?如何安全退出已调用多个Activity的Application? 两个Activity之间怎么传递数据?
第三篇:Android 退出activity 的方式总结
Android 退出activity 的方式总结(2012-09-02 22:24:20)在android中使用:[activityname].this.finish();只是退出了activity的堆栈中,要真正的退出程序在手机cpu中的运行,当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用:
一 使用killProcess()函数,首先获取当前进程的id,然后杀死该进程: android.os.Process.killProcess(android.os.Process.myPid());
通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空
二 在activity的生命周期函数中添加如下的函数,强制关闭与该包有关联的一切执行:
ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(“packagename”);
还需要在AndroidManifest.xml文件中加入如下的权限:
此做法:只能杀死别人,不能杀死自己
三、终止当前正在运行的Java虚拟机,导致程序终止 System.exit(0);不会把自己的应用程序杀死
企业中做法:
创建类app 继承Application
AndroidMainfest-->name-->app //声明该类为整个应用程序全局的实例
创建整个应用程序全局的实例
App.class: ArrayList
其他的Activity中: public void onCreate(Bundle savedInstanceState){ App app =(App)getApplication();//获取应用程序全局的实例引用
app.activities.add(this);//把当前Activity放入集合中 }
public void onDestory(){ App app =(App)getApplication();//获取应用程序全局的实例引用
app.activities.remove(this);//把当前Activity从集合中移除 }
安全退出:
在菜单退出按钮的事件中定义如下代码: App app =(App)getApplication();List
第四篇:东南大学——转自论坛
转自论坛,仅提供给想了解东南大学的人,读一下。文章写于2013年。
这里首先从东南大学的三个全国第一的学科说起:东南3个全国第一的学科,恰恰是东南从无到有,白手起家发展而来,发展历程可谓充满了东南止于至善的精神。
东南交通学科:东南大学交通学院成立于1995年,其前身可追溯到原中央大学工学院土木工程系的路工组、五十至八十年代南京工学院土木工程系的道路教研组、1987年成立的运输工程研究所、1989年成立的交通运输工程系。从邓学均老前辈,到黄卫、王炜、刘松玉等各代交通人一路开拓而来,交通学科从无到有,从小到大,从大到强,用了20多年时间,不但使交通学科成为学校科研骨干,更做到全国领先,甚至荣登第一宝座,令人感慨。
东南生医学科:1984年10月由韦钰院士创建生物医学工程及仪器系,韦钰院士电子出身,却为东南生医学科的发展指明了发展方向。东南生医学科发展到今天,已经成为了信息科学、生命科学、材料科学相互交叉的学科,不但巩固了东南弱电学科实力,更为东南在生命科学领域争得了话语权,成为东南大学重要的学科增长点。近年来,东南生医作为先驱者,开展了脑认知科学、学习科学等前沿科学研究,再次为东南生命科学领域打开一片广阔的天地。同样用了20年,东南人把一个学科从0,做到了国内领先,甚至国际一流。
东南艺术学科:1994年,东南大学成立了艺术系,在老前辈张道一先生的开拓下,发展出了我国首家艺术学博士点,第一个艺术学博士后流动站,2007年东南大学艺术学被教育部增列为国家重点学科,该学科是江苏省截止目前唯一的艺术类国家重点学科,也是全国唯一一家属于艺术学理论的国家重点学科。还是只用了将近20年的时间,东南艺术学人白手起家,让艺术学成为东南工科大背景下的一大亮点。
如果说,东南的建筑、土木、电子、信息是历史上一直就很强势的学科,那么说明东南在相关领域具有很高的历史地位和学术底蕴,是东南厚重的历史传承。而交通、生医、艺术等学科,并非东南传统强势,这些学科在20年的时间,从无到有,从不入流到一流甚至顶尖,则说明了东南的冲劲和奋斗的艰辛与辉煌。
展望未来,东南大学的强势学科和国家重大科技发展战略、国民经济和社会发展方向、尖端前沿科学高度吻合,东南未来发展大有可为,充满希望。结合未来发展趋势,东南大学形成了四大发展引擎:
第一、土建交学科群。未来20-30年,中国将完成城市化进程,城市化将成为中国经济发展的核心驱动力(参见李总理会议发言),东南大学顶尖的土建交学科集群,将从城市设计与规划、建筑设计与施工、道路交通建设与管理等方面为中国城市化进程做出贡献,同时该进程将反哺东南土建交的学科发展,为东南大学发展换来巨大的空间。诚然,随着城市化的深入,土建学科的发展会面临新的问题,但是东南人还有至少20年的时间,去准备今后的转变或者转型,开辟出新的增长点。东南人用了20年时间,把三个学科从0做到第一,我相信东南人也有能力和眼光完成今后的进一步转型。
第二、信息学科群。到2020年国家科技发展16个重大专项中,东南大学将在新一代宽带无线移动通信、极大规模集成电路制造技术及成套工艺、核心电子器件、高端通用芯片及基础软件三大领域大有可为,甚至占据主要地位,这些规划将给东南极大的发展空间。以信息、电子为核心,将进一步带动东南的计算机、控制等信息大类学科。东南大学的强势学科和国家重大科技战略高度吻合,这将给东南大学提供持续的增长潜力。
第三、生物医学工程及相关学科群。之所以把该学科单独列出,我觉得该学科恰恰契合当今科学前沿——生命科学。有人说21世界是生命学科大发展的世纪。东南大学的生物医学工程早已突破传统的工学研究范畴,与生命学科形成了高度融合。东南大学以生物医学工程为学科平台,在生物信息的获取、分析和建模,生物医用纳米材料与器件,生物电子学,生物力学四大方向都有了长期研究,其成果将有助于人类重大疾病的诊断、检测、治疗,同时更加深入认识生命体所包含讯息,带动临床医学、基础医学等发展。东南的生科院,近几年来也成为东南大学的学术特区,在神经生物学、遗传学也开展了卓有成效的研究。东南的又一强势学科,恰恰紧追了当前生命科学前沿,这将为东南发展带来强大动力。
第四、艺术学科群。2011年国家提出文化大繁荣战略,其中文化机制创新及产业发展成为重要内容。东南大学艺术学科拥有“艺术与创意产业研究”985学科平台,这将使东南大学在国家文化大发展、大繁荣的进程中发挥重要作用,为东南大学提供发展动力。
以上四大引擎将带动东南大学今后发展
回顾历史 东南大学有好的地方 也有不好的地方,但是一所大学的发展,不是以几年的历程来评判的,更重要的是展望未来,东南大学历史上的强势学科及新一代东南人开拓出来的强势学科,如此高度契合国家发展战略、科技发展前沿、社会发展方向,既是幸运,也是机会,希望东南大学可以把握机会,前景看好
补充点一,关于土建学科群的转型,东南不用到20年后,其实东南现在已经开始了布局:东南大学于2010年成立了城市工程科学技术研究院,该院以解决复杂的大规模城市工程系统问题,研究安全、舒适、健康及可持续性发展的城市基础设施、系统和环境的现代科学理论及工程技术,同时加强土建交通与材料、能源、环境、信息的深度交叉及融合,加快了土建交通高峰学科群优先跨入世界一流行列的速度。东南大学这一学术特区,将致力于建设环保、节能、舒适、安全、智能的城市,该研究院成立近3年,已经牵头973一项,牵头国家科技奖一项,863项目及国家科技支撑计划若干项。
[补充点
二、除国家重大专项外,东南大学在“十二五”国家863计划共设立的信息、生物与医药、新材料、先进制造、先进能源、资源环境、海洋、现代农业、现代交通、地球观测与导航十个领域中,在信息、生物与医药、现代交通、先进制造四大领域大有可为,3位教授出任主题专家,其中黄庆安教授担任先进制造技术领域微纳制造技术主题专家组专家(召集人)、陆祖宏教授担任生物和医药技术领域前沿生物技术主题专家组专家、时龙兴教授担任信息技术领域微电子与光电子技术主题专家组专家。附“十五”863主题专家:尤肖虎教授(通信技术主题)、胡爱群教授(信息安全技术主题)、陆祖宏教授(生物信息技术主题)、戴先中教授(机器人技术主题)和赵长隧教授(能源技术领导专家委员会),共计5位
“十一五”863主题专家:尤肖虎(通信技术主题)、王炜(现代交通技术主题),共计2位
863计划,再次印证了东南大学的学科布局紧密结合国家重大科技发展战略
第五篇:Android关于Activity管理的一个简单封装
我的Android进阶之旅------>Android关于Activity管理的一个简单封装
2015-07-30 12:10 631人阅读 评论(2)收藏 举报
分类:
Android应用开发(226)
版权声明:本文为【欧阳鹏】原创文章,欢迎转载,转载请注明出处!【http://blog.csdn.net/ouyang_peng】
如何管理当前的运行Activity栈,如何彻底退出程序,本文封装了一个Activity管理类,可以方便随时退出程序。
[java] view plain copy
1.import java.util.Stack;2.3.import android.app.Activity;4.import android.content.Context;5.6.public class ActivityManager {
7.private static Stack
10.instance = new ActivityManager();11.} 12.13.public static ActivityManager getInstance(){ 14.return instance;15.} 16.17./**
18.* 添加指定Activity到堆栈
19.*/
20.public void addActivity(Activity activity){ 21.if(activityStack==null){
22.activityStack=new Stack
24.activityStack.add(activity);25.} 26./**
27.* 获取当前Activity
28.*/
29.public Activity currentActivity(){
30.Activity activity=activityStack.lastElement();31.return activity;32.} 33./**
34.* 结束当前Activity
35.*/
36.public void finishActivity(){
37.Activity activity=activityStack.lastElement();38.finishActivity(activity);39.} 40./**
41.* 结束指定的Activity
42.*/
43.public void finishActivity(Activity activity){ 44.if(activity!=null){
45.activityStack.remove(activity);46.activity.finish();47.activity=null;48.} 49.} 50./**
51.* 结束指定Class的Activity
52.*/
53.public void finishActivity(Class> cls){ 54.for(Activity activity : activityStack){ 55.if(activity.getClass().equals(cls)){ 56.finishActivity(activity);57.return;58.} 59.} 60.} 61.62./**
63.* 结束全部的Activity
64.*/
65.public void finishAllActivity(){
66.for(int i = 0, size = activityStack.size();i < size;i++){ 67.if(null!= activityStack.get(i)){ 68.activityStack.get(i).finish();69.} 70.}
71.activityStack.clear();72.} 73./**
74.* 退出应用程序
75.*/
76.public void AppExit(Context context){ 77.try {
78.finishAllActivity();
79.android.app.ActivityManager activityMgr=(android.app.ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);80.activityMgr.restartPackage(context.getPackageName());81.System.exit(0);82.} catch(Exception e){ } 83.} 84.}
======
下面从http://www.xiexiebang.com
17.* weibo : @桥下一粒砂
18.* date : 2012-7-8
19.*
20.*/
21.public class ActivityUtil { 22.23./**
24.* title : 设置Activity全屏显示
25.* description :设置Activity全屏显示。
26.* @param activity Activity引用
27.* @param isFull true为全屏,false为非全屏
28.*/
29.public static void setFullScreen(Activity activity,boolean isFull){ 30.Window window = activity.getWindow();
31.WindowManager.LayoutParams params = window.getAttributes();32.if(isFull){
33.params.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;34.window.setAttributes(params);
35.window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
36.} else {
37.params.flags &=(~WindowManager.LayoutParams.FLAG_FULLSCREEN);38.window.setAttributes(params);
39.window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);40.} 41.} 42.43./**
44.* title : 隐藏系统标题栏
45.* description :隐藏Activity的系统默认标题栏
46.* @param activity Activity对象
47.*/
48.public static void hideTitleBar(Activity activity){
49.activity.requestWindowFeature(Window.FEATURE_NO_TITLE);50.} 51.52./**
53.* title : 设置Activity的显示方向为垂直方向
54.* description :强制设置Actiity的显示方向为垂直方向。
55.* @param activity Activity对象
56.*/
57.public static void setScreenVertical(Activity activity){
58.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);59.} 60.61./**
62.* title : 设置Activity的显示方向为横向
63.* description :强制设置Actiity的显示方向为横向。
64.* @param activity Activity对象
65.*/
66.public static void setScreenHorizontal(Activity activity){
67.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);68.} 69.70./**
71.* title : 隐藏软件输入法
72.* description :隐藏软件输入法
73.* time : 2012-7-12 下午7:20:00
74.* @param activity
75.*/
76.public static void hideSoftInput(Activity activity){
77.activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);78.} 79.80./**
81.* title : 使UI适配输入法
82.* description :使UI适配输入法
83.* time : 2012-7-17 下午10:21:26
84.* @param activity
85.*/
86.public static void adjustSoftInput(Activity activity){ 87.activity.getWindow().setSoftInputMode(88.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);89.} 90.91./** 92.* title : 跳转到某个Activity。
93.* description :跳转到某个Activity
94.* time : 2012-7-8 下午3:20:00
95.* @param activity 本Activity
96.* @param targetActivity 目标Activity的Class
97.*/
98.public static void switchTo(Activity activity,Class extends Activity> targetActivity){
99.switchTo(activity, new Intent(activity,targetActivity));100.} 101.102./**
103.* title : 根据给定的Intent进行Activity跳转
104.* description :根据给定的Intent进行Activity跳转
105.* time : 2012-7-8 下午3:22:23
106.* @param activity Activity对象
107.* @param intent 要传递的Intent对象
108.*/
109.public static void switchTo(Activity activity,Intent intent){ 110.activity.startActivity(intent);111.} 112.113./**
114.* title : 带参数进行Activity跳转
115.* description :带参数进行Activity跳转
116.* time : 2012-7-8 下午3:24:54
117.* @param activity Activity对象
118.* @param targetActivity 目标Activity的Class
119.* @param params 跳转所带的参数
120.*/
121.public static void switchTo(Activity activity,Class extends Activity> targetActivity,Map
123.Intent intent = new Intent(activity,targetActivity);124.for(Map.Entry
126.}
127.switchTo(activity, intent);128.} 129.} 130.131./**
132.* title : 带参数进行Activity跳转 133.* description :带参数进行Activity跳转
134.* time : 2012-7-17 下午10:22:58
135.* @param activity
136.* @param target
137.* @param params
138.*/
139.public static void switchTo(Activity activity,Class extends Activity> target,NameValuePair...params){ 140.if(null!= params){
141.Intent intent = new Intent(activity,target);142.for(NameValuePair param : params){
143.setValueToIntent(intent, param.getName(), param.getValue());
144.}
145.switchTo(activity, intent);146.} 147.} 148.149.150./**
151.* title : 显示Toast消息。
152.* description :显示Toast消息,并保证运行在UI线程中
153.* time : 2012-7-10 下午08:36:02
154.* @param activity
155.* @param message
156.*/
157.public static void toastShow(final Activity activity,final String message){
158.activity.runOnUiThread(new Runnable(){ 159.public void run(){
160.Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();
161.} 162.});163.} 164.165./**
166.* title : 将值设置到Intent里
167.* description :将值设置到Intent里
168.* time : 2012-7-8 下午3:31:17
169.* @param intent Inent对象
170.* @param key Key
171.* @param val Value
172.*/ 173.public static void setValueToIntent(Intent intent, String key, Object val){
174.if(val instanceof Boolean)
175.intent.putExtra(key,(Boolean)val);176.else if(val instanceof Boolean[])
177.intent.putExtra(key,(Boolean[])val);178.else if(val instanceof String)
179.intent.putExtra(key,(String)val);180.else if(val instanceof String[])
181.intent.putExtra(key,(String[])val);182.else if(val instanceof Integer)
183.intent.putExtra(key,(Integer)val);184.else if(val instanceof Integer[])
185.intent.putExtra(key,(Integer[])val);186.else if(val instanceof Long)
187.intent.putExtra(key,(Long)val);188.else if(val instanceof Long[])
189.intent.putExtra(key,(Long[])val);190.else if(val instanceof Double)
191.intent.putExtra(key,(Double)val);192.else if(val instanceof Double[])
193.intent.putExtra(key,(Double[])val);194.else if(val instanceof Float)
195.intent.putExtra(key,(Float)val);196.else if(val instanceof Float[])
197.intent.putExtra(key,(Float[])val);198.} 199.200.}