Application、进程、Task、Activity理解

查阅了各种资料,以自己的理解加以整理。

关于进程
一个Application就是一个应用,在应用启动时,android会启动一个linux进程和一个主线程,这个进程以应用的包名命名,在默认的情况下,这个Application下的Activity、service、provider、receiver等组件都在这个进程中运行。在Manifest中。可以这个组件的“android:process”属性来指定这个组件运行在哪个进程。如果某组件process指定的进程名以冒号开头,如:android:process=”:baidumap”,则这个“:baidumap”进程对于这个应用来说是私有的,那么这个进程会被创建;如果
某组件process指定的进程名是以小写字母开头的,如“com.xxx.xxx”,那么这个组件将运行在“com.xxx.xxx”这个全局进程中,实现资源共享。

关于Task
Task在用户的角度看,它相当于一个Activity的栈,用户在按返回时,这个栈就回退,显示前一个Activity。但是实际上,Task并不是一个实际存在的栈,Activity存在ActivityStack中,TaskRecord记录activity属于哪个Task,Task用TaskId来标识。比如,在微信中打开系统相机,微信和相机属于不同应用,用户在相机中按返回怎么回到微信呢?把他们放他一个Task中就可以。

关于Activity的启动模式
Activity的有四种启动模式,分别是standard、singleTop、singleTask、singleInstance。
standard:standard是默认的启动模式,在任何时候都是启动新的activity。比如在A、B、C都是standard模式,启动顺序是A-A-B-A-C-A-A那么在栈中的activity就是A-A-B–C-A-A,用户在按返回时也是依次回退。
singleTop:这种模式允许多个实例,但是不能叠加。比如栈顶的Activity是A,那么再次启动A时,不会创建新的实例,而是调用A的onNewIntent方法。
singleTask:这种模式下,只允许一个实例。在启动Ativity B时,如果该Task中没有这个B,则创建,如果有,这将这个B上面的Activty全部destory,并调用B的OnNewIntent方法。比如Task中Activity是A-B-C-D,在启动B,那么先destory C、D,再调用B的onNewIntent方法。如果在其他应用other中启动B,如果B所在的Task在运行,那么将这个Task带到前台,并将上面的destory调,如果没有,那么会重新创建新的Task。
singleInatance:只有一个实例而且这个实例单独在一个Task中。

关于Intent的Flag
FLAG_ACTIVITY_NEW_TASK:会开启一个新的Task,并创建该Activity置于栈底。如果这个Activity所在的Task已经在运行,那么将这个Task放到前台,并创建这个Activity置于栈顶。
FLAG_ACTIVTY_CLEAR_TOP:如果要启动的Activity B已经在当前task中,那么会将这个B之上的Activity清除掉,重新创建这个B或者调用B的onNewIntent。如果B的启动模式是“standard”,且没有设置“FLAG_ACTIVITY_SINGLE_TOP”会重新创建,其他情况会调用onNewIntent。将FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVTY_CLEAR_TOP结合起来,可以启动一个task的根节点。比如:如果我要启动根节点A,如果A没有启动,那么开启一个新的task,将A置于栈底,如果A已经在Task中,且这个Task中的Activity为:A-B-C,那么首先将给Task放到前台,再将B、C清除掉。
FLAG_ACTIVITY_SINGLE_TOP:如果要启动的Activity再栈顶时,调用onNewIntent,不创建新的Activity。
FLAG_ACTIVITY_CLEAR_WHEN_RESET:可以设置Activity为一个还原点,在再次打开这个应用时,会清除栈中还原点之上的activity。例如一个音乐播放器,用户打开了歌曲列表,又进入了播放界面,你希望用户再次打开时进入歌曲列表,而不是播放界面,就可以把歌曲列表界面设置为还原点,再次打开时,会清除播放界面而直接进入歌曲列表界面。
FLAG_ACTIVITY_FORWORD_RESULT:从一个ActivtyA启动另一个ActivityB,那么可以在B中setResult(int),这个result可以发送到A中。比如:在Activity中启动一个DialogActivity,那么DialogActi处理结果可以返回到Activity中。

主要参考:http://www.cnblogs.com/franksunny/archive/2012/04/17/2453403.html   
               http://blog.csdn.net/shinay/article/details/7898492/
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要停止一个应用程序进程,可以按照以下步骤: 1. 打开“任务管理器”,快捷键是“Ctrl+Shift+Esc”。 2. 在“进程”选项卡中,找到你想要停止的应用程序进程。 3. 右键点击该进程,然后选择“结束进程”。 4. 在弹出的确认窗口中,点击“确定”按钮。 这样,应用程序进程就会被停止。注意:如果该应用程序存在未保存的数据,强行停止进程可能会导致数据丢失。 ### 回答2: 要停止一个Application进程,可以采取以下步骤: 1. 打开Android设备的设置菜单。在主屏幕上向下滑动,或在应用程序列表中找到“设置”图标并点击打开。 2. 在设置菜单中,向下滑动并找到“应用程序”或“应用管理器”选项。点击打开此选项。 3. 在应用程序列表中,找到您想要停止的应用程序。您可以通过滑动页面浏览应用列表,或使用搜索框输入应用程序的名称来快速找到它。 4. 点击找到的应用程序,进入其详细信息页面。 5. 在应用程序详细信息页面中,您可能会看到多个选项,如“启动”、“存储”、“权限”等。滑动页面并找到“停止”或“结束运行”选项。 6. 点击“停止”选项。这将停止该应用程序的进程,并释放其占用的系统资源。 请注意,某些系统应用程序可能无法停止,或者如果停止了它们的进程,可能会导致系统不稳定。此外,停止应用程序的进程可能会导致正在进行的任务丢失,且下次启动应用程序时可能需要重新初始化。 准确停止Application进程是一项相对高级的操作,如果您不确定该如何操作,建议您谨慎操作,或者咨询专业人士的建议。 ### 回答3: 停止Application进程是指终止正在运行的应用程序。停止Application进程可以通过以下步骤进行操作: 1. 打开设备的任务管理器或应用列表。 2. 在任务管理器中找到正在运行的应用程序。 3. 单击或长按需要停止的应用程序图标。 4. 在弹出的菜单中选择“停止”或“关闭”。 5. 确认停止应用程序的操作。 6. 应用程序将被停止并从设备的内存中释放。 停止Application进程可以有多种原因和目的,例如: 1. 应用程序出现错误或崩溃,停止进程可以重新启动应用程序并修复问题。 2. 应用程序占用过多的设备资源,导致设备运行缓慢或不稳定,停止进程可以释放资源,提高设备的性能和稳定性。 3. 用户不再需要使用某个应用程序,停止进程可以节省设备的存储空间和电池寿命。 需要注意的是,停止Application进程可能会导致已打开的应用程序数据丢失,因此在停止进程之前应及时保存重要的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值