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设定一种恰当的启动方式.
分享到:
相关推荐
本文将详细讲解Activity的几种启动模式及其特点。 1. **标准模式(Standard)** 这是Activity的默认启动模式,每次启动都会创建一个新的实例。如果栈中已有该Activity的实例,系统会创建新的实例并将其压入栈顶。...
每个Activity都配置不同的启动模式,通过按钮或Intent切换启动不同Activity,观察它们在任务管理器中的行为,以及onCreate()、onStart()、onResume()和onNewIntent()等生命周期方法的调用情况。通过这种方式,你可以...
配置方法与前面几种不同,需要指定两个属性。 ```xml <activity android:name=".ActA" android:launchMode="singleInstance" android:excludeFromRecents="true"> </activity> ``` **运行效果**: - `ActA`始终...
本篇文章将深入探讨如何在Android中实现Activity跳转的几种动画效果。 一、默认动画 在不设置任何自定义动画的情况下,Android系统会使用默认的滑动效果进行Activity切换。这种效果可以通过设置`activity过渡`来...
为了避免这种情况,有以下几种策略可以采用: 1. **控制启动Activity的条件**:在onReceive()方法中添加逻辑判断,确保在满足特定条件时才启动Activity。例如,可以检查当前是否已有相同的Activity处于栈顶,如果...
Android系统提供了四种主要的Activity启动模式:标准模式(Standard)、单实例模式(SingleInstance)、单任务模式(SingleTask)和单栈顶模式(SingleTop)。在标准模式下,每次启动Activity都会创建一个新的实例,...
本文将深入探讨`Activity`的四种启动模式(Standard、SingleTop、SingleTask、SingleInstance)如何影响`startActivityForResult`的工作机制。 首先,我们来看看`Activity`的四种启动模式: 1. **Standard(默认...
本文将深入探讨如何在Android Studio中实现几种基本的Activity效果,这些效果对于提升用户体验至关重要,特别适合正在入门Android编程的开发者。 Activity在Android系统中扮演着核心角色,它是应用程序的基本构建块...
本文将深入解析Android的四种Activity启动模式:standard、singleTop、singleTask以及singleInstance。 1. standard(标准模式) 这是Activity的默认启动模式,每次启动时都会创建一个新的Activity实例。这意味着...
它决定了`Activity`启动时的行为方式,对应用的流程和用户体验有直接影响。本测试旨在深入理解和探索`launchMode`的不同模式及其应用场景。 首先,我们来详细解析四种主要的`launchMode`: 1. **standard(默认...
### 总结几种Activity之间切换的动画效果 在Android应用开发过程中,为了提升用户体验和界面交互的友好性,开发者常常需要实现Activity之间的过渡动画。这些动画不仅能够使应用显得更加流畅自然,还能够帮助用户更...
5. **测试不同启动标志(FLAG)**:Intent可以携带不同的启动标志,如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP等,这些标志会影响Activity的启动行为,需要结合LaunchMode一起考虑。 6. **实践与代码分析...
本教程将深入探讨Activity通信的几种主要方式。 一、Intent:Intent是Android中用于启动Activity和Service以及传递数据的主要手段。它分为显式Intent和隐式Intent两种类型: 1. 显式Intent:明确指定要启动的...
本DEMO主要展示了Android应用中的几种常见启动方式以及与之相关的动画效果和UI交互,如通过ViewPage实现的左右滑动以及BUTTON触发的主界面启动。下面我们将详细探讨这些知识点。 1. **Android启动模式**: - **...
首先,Activity的生命周期分为几个关键状态:创建(Created)、启动(Started)、运行(Resumed)、暂停(Paused)、停止(Stopped)和销毁(Destroyed)。当Activity首次创建时,会经历onCreate()、onStart()和...
当我们谈论"不同Activity间的跳转"时,我们实际上是在讨论如何在Android应用中从一个屏幕导航到另一个屏幕。在这个过程中,通常会涉及到Intent对象的使用,Intent是Android系统用来启动或与服务进行交互的一种机制。...
"Activity之间的跳转项目案例实现"这个主题主要关注如何在不同的Activity之间切换,并且在跳转过程中传递数据。这里我们将详细探讨Activity的生命周期、启动模式、以及如何在Activity间进行数据传递。 首先,...
在源码实现过程中,有几种常见的方法: 1. **使用XML布局**:在布局文件中,我们可以为根布局(如LinearLayout、RelativeLayout等)设置一个可替换的背景资源。例如: ```xml android:id="@+id/rootLayout" ...
Activity的启动有两种方式:标准模式(singleTask)和栈管理(singleTop)。标准模式下,每次启动Activity都会创建新的实例,而栈管理则会在栈顶存在相同Activity时直接复用。此外,还有单例模式(singleInstance)...