Android开发者在设计之初可以决定用户与应用程序的交互方式,其中包括如何选择程序启动入口以及Package中所包含的Activities.众所周知,应用程序是一系列有着特定功能的Activities组成,它们有自己的属性和行为.用户可以在Home中通过启动快捷方式将当前进程引入特定的Activites,或者可以在其它程序进程中启动外部的Activities.有的人会问,了解程序的启动方式有用吗?当然,了解不同的启动方式才能更好的根据需要设计Activities.
下边将介绍五种与其相关的设计模式:
1.通过Home中的快捷方式图标(或者下拉的Application Launcher)启动.这是最常见的启动方式,而且代表程序具备独立的运行条件.通常会在Manifest中指定某个Activity的android.intent.category属性为Launcher.
2.在其它程序中间接启动:这体现了Activities在Android中一个非常重要的特性"重用性",例如:用户在当前的操作过程中希望将特定的信息通过Email的方式发送给好友,一般情况下会利用系统默认的处理邮件Activity响应这项请求,如果恰巧此时系统中存在其它类似intent-filter的Activites,那么将会提供给用户一个可选择的对话框,用户可以根据需要启动恰当的应用程序,这个过程可以看作为间接的启动Applications.或者在预知当前系统配置的情况下,直接应用(startActivity() 或者startActivityForResult())启动特定的Activity.
StartActivity(): 通过这种方式启动应用程序可以看作为独立运行于系统中,启动它的parent无需得到其所运行的返回值,更具体的讲是一个Standalone的应用程序启动了另一个有着同样Standalone特性的程序.
StartActivityForResult(): 通过方法的命名可以很直观的看到,其最大的作用是当启动了某个Activity后,parent依然关联着当前进程所处理的Activity.当操作完成后,会有特定的返回值作为Parent响应某些Events的结果.
3.强制程序仅以被其它程序调用的方式启动(没有直接的启动入口).在系统中有相当一部分的应用程序需要有严格的运行条件(Context),其无法以Stand alone的方式独立运行于进程中.具备这种特性的Application大体上分为两种:
其一,带有特定返回值的应用程序.parent出于当前操作需要,通过启动其它Application来获得某些特定的资源.例如:输入法或者文件资源选择器等.
其二,经常被调用来修改系统设置或者提供单一有特定目的的操作.这样的Application无需在Home中提供快捷启动方式,其仅仅被其它某些程序在特定的需求下来满足需求.例如:更换系统铃音程序.
4.在一个Application中包含有多个Main Activities,并且各自具备有独立的启动入口.很多开发者都习惯于默认的开发配置,一个Application仅仅包含一个独立的应用.然而在特定的需求下可以打破这个限定,系统允许开发者将多个Main Activities应用捆绑在同一个Application中,而且这些Main Activities可以在Home中有独立的启动快捷方式.然而有非常重要的一点需要特别强调,这种方式并不提倡在任何情况下采用,一般当两个应用程序需要调用相同的系统资源或者包含有大部分相同功能的应用时,才可以考虑采用这种方式来简化用户的安装过程(另外一个角度来看起到优化系统资源的目的).技术上需要注意为不同的Main Activity定义不同的Task affinity.
例如:Camera和Camcorder,它们共同使用摄像头,而且同样采用Gallery作为资源管理器,他们的Task Affinity分别设置为:"com.android.camera” 和 "com.android.videocamera".
5.以Widget的方式体现Activity的应用价值:严格意义上来看,这的确算得上是一种启动方式,某些Application将部分常用的功能以Widget的形式在Home或者其它Application中被引用.
以上是Android系统中在不同的需求下来启动Activity的方式,开发者可以根据特定的需求为Application设定一种恰当的启动方式.
分享到:
相关推荐
主要介绍了Android编程中Activity的四种启动模式,较为详细的分析了Activity四种启动模式的原理与功能,需要的朋友可以参考下
在Android中,Activity主要负责前台页面的展示,Service主要...接下来我就介绍两种方式来实现Service与Activity之间的通信问题 通过Binder对象 当Activity通过调用bindService(Intent service, ServiceConnection co
在Android中,Activity主要负责前台页面的展示,Service主要...接下来我就介绍两种方式来实现Service与Activity之间的通信问题 1、通过Binder对象 当Activity通过调用bindService(Intent service, ServiceConnection
主要介绍了Activity 四种启动模式详细介绍的相关资料,需要的朋友可以参考下
具体来讲,启动activity的方式有以下几种: 在应用程序中startActivity()或startActivityForResult()方法启动指定activity 在HOME(桌面)程序中单击应用图标,启动新的activity 按”BACK”键结束当前activity,...
下面,我们列举一些退出应用的几种方式。 1.利用ActivityContainer来管理所有的Activity的引用 2.使用广播通知BaseActivity结束 3.直接杀死进程 4.采用SingleTask的特点,结束应用 5.第四种方式的更优雅实现 6...
Android编程中经常涉及到页面的切换,启动一个新的页面(或者说Activity)的时候需要为其指定合适的“启动模式”。指定的启动模式不合适,会出现类似下面这种奇怪的效果: 你拿起QQ切换了一个新的账号,一直按返回却...
1. Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗? 2. Activity和Task的启动模式有哪些? 每种含义是什么?
4、 android 中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别。 3 5、 ListView的优化方案 4 6、 请介绍下Android的数据存储方式。 4 7、 activity的启动模式有哪些?是什么含义? 6
1.Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗? 这里Android123提示大家,Intent的一些标记有FLAG_ACTIVITY_BROUGHT_TO_FRONT、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、...
Android几种进程 APP启动过程 Activity启动流程以及界面展示过程 图片三级缓存 Bitmap的分析与使用 热修复的原理 AIDL Binder机制 Zygote和System进程的启动过程 Android中的MVC,MVP和MVVM MVP Android开机过程 ...
Android几种进程 APP启动过程 Activity启动流程以及界面展示过程 图片三级缓存 Bitmap的分析与使用 热修复的原理 AIDL Binder机制 Zygote和System进程的启动过程 Android中的MVC,MVP和MVVM MVP Android开机过程 ...
5. 第四章介绍了几种数据存储方式,如文件、SharedPreferences、SQLite数据库等。 6. 第五章进阶讲解了ListView的使用、BaseAdapter自定义适配器、Fragment等UI开发高级内容。 7. 第六章讲解了内容提供者的概念及...
3)Activity的四种启动模式对比? 4)Activity在有Dialog时按Home键的生命周期? 5)两个Activity 之间跳转时必然会执行的是哪几个方法? 6)Service的启动方法与生命周期? 7)广播分为哪几种,应用场景是什么? ...
重启对应Activity有几种方式: 如果用户进入语言设置需要太多的层级,或者在操作语言设置之前操作的其他行为,APP想保存的,那可以通过广播的方式(sendBroadcast()),语言改变时发送广播,所有activity接受到广播后...
Intent主要有以下几种重要用途: 1. 启动Activity:可以将Intent对象传递给startActivity()方法或startActivityForResult()方法以启动一个Activity,该Intent对象包含了要启动的Activity的信息及其他必要的数据。 2...
两种启动方式的区别2.Service启动流程3.Service与Activity怎么实现通信4.IntentService是什么,IntentService原理,应用场景及其与Service的区别5.Service 的 onStartCommand 方法有几种返回值?各代表什么意思?6....
1种是fragment运行在任意支持fragment的activity中,这种方式,在开发fragment的时候,fragmeng中凡是要使用context的地方,都需要使用通过PluginLoader.getPluginContext()获取的context,那么这种fragment对其运行...
(1)针对多窗口类浏览器模式问题,指出并分析了该问题存在的原因,利用Activity的运行机制,通过Fragment栈对主要模块的Webview进行管理,实现对不同模块之间切换的控制。 (2)针对跨域数据交互问题,指出并分析了...
Android多线程的几种方式 Handler.sendXXXMessage() Handler.post(Runnable) Activity.runOnUIThread(Runnable) View.post(Runnable) AsyncTask 布局的优化 HierarchyViewer查看Layout层次 标签重用一些比较复杂的...