Task
1、 什么是 Task ?
Task 翻译成中文叫做任务,那么什么是任务呢?
Task 就是一个栈 (A task is a stack of activities.) ,这个栈里面存放了很多 Activity ,它遵循着后进先出的原则。
栈有两个动作:压栈(把对象压入到栈当中)和弹栈(把栈中的第一个对象从栈里面拿出来)。
2、 Task 运行过程
示例 1 :创建一个 Android 应用程序,编写 3 个 Activity(FirstActivity 、 SecondActivity 、 ThirdActivity) ,每个 Activity 都有一个按钮,当点击 FirstActivity 的 Button 按钮时,跳转到 SecondActivity ,当点击 SecondActivity 的 Button 按钮时,跳转到 ThirdActivity ,当再点击 ThirdActivity 的 Button 按钮时,调用 Android 自带的一个发送短信的应用程序。(程序已打包上传至附件中,有需要的可下载进行查看运行)
运行程序,观察 Task 运行的过程。
这个应用程序的 FirstActivity 、 SecondActivity 、 ThirdActivity 以及 Android 自带的发送短信的应用程序就组成了一个 Task 。
Task 运行过程讲解:
1) 应用程序启动之后,运行的第一个 Activity ( FirstActivity ),该 FirstActivity 对象被压入到 Stack 当中。
2) 当点击了 FirstActivity 的按钮之后,启动第二个 Activity ( SecondActivity ),该 SecondActivity 对象被压入到 Stack 当中。
注:现在 FirstActivity 处在 Stack 的底部, SecondActivity 处于 Stack 的顶部,手机永远显示的都是 Stack 顶部的元素,所以现在界面显示的是 SecondActivity 。
3) 当点击了 SecondActivity 的按钮之后,启动第三个 Activity ( ThirdActivity ),该 ThirdActivity 对象被压入到 Stack 当中。
注:现在 FirstActivity 处在 Stack 的底部, ThirdActivity 处于 Stack 的顶部,手机永远显示的都是 Stack 顶部的元素,所以现在界面显示的是 ThirdActivity 。
4) 最后点击 ThirdActivity 的按钮之后,启动 Android 自带的发送短信的应用程序( SMS Activity 对象),该 SMS Activity 对象被压入到 Stack 当中。
注:同理,现在 FirstActivity 仍然处在 Stack 的底部, SMS Activity 对象处于 Stack 的顶部,所以现在界面显示的是 SMS Activity 对象的界面。
(以上执行的是压栈操作,现在我们点击返回来看弹栈操作)
5) 点击模拟器右侧的 Back 按钮之后,这个时候 SMS Activity 对象被从栈中弹出来。 SMS Activity 对象被弹出来之后, ThirdActivity 又变成栈的顶部,当前程序显示的就是 ThirdActivity 的内容。(因为栈遵循后进先出的原则)
6) 当再点击 Back 按钮之后, ThirdActivity 被从栈中弹出来,程序显示 SecondActivity 的内容。
7) 再点击 Back 按钮, SecondActivity 被从栈中弹出来,程序显示 FirstActivity 的内容。
注意:
a )、现在在 SecondActivity 中的 startActivity(intent) 后调用 finish() 方法。将程序运行到 ThirdActivity 后,点击 Back 按钮,此时,程序并没有返回到 SecondActivity ,而是直接返回到 FirstActivity 。
原因:由于在点击 SecondActivity 的按钮之后,它启动了 ThirdActivity ,同时将 SecondActivity 销毁掉了,这个时候栈里面只有 ThirdActivity 和 FirstActivity ,当再点击 Back 的时候它就不是回到 SecondActivity 而是回到 FirstActivity 了。
b )、在整个栈当中, Activity 只有弹出和压入这两个动作,是不允许调换 Activity 之间的顺序的。
3、 Task 对的作用
在同一个 Task 里面的 Activity 被组织成同一个单元(可以将不同应用程序的 Activity 组织在一起)。
分享到:
相关推荐
详细讲解android task以及android四种加载模式。 测试及原理说明结合。
关于Android中的进程和线程文档,看完后对 Android里面的Task概念有更深的了解。
今天讲下如何定时执行后台任务。 主要使用到TimerTask,相信大家都用过,大家可以看下TimerTask的源码。这里是一个简单的TimerTaskDemo。
即使那个activitie可能来自不同的应用,Android也靠着把两个activity保存在同一个任务中来实现这种无缝的用户体验. 一个任务是用户在执行某种工作时所交互的activitie的集合.activitie们放置在一个栈("后退栈")中,...
这是一个大佬的设计思路,主要用作参考用,用于android启动优化的操作,通过task来进行操作,值得借鉴!!分高但是值
NULL 博文链接:https://fonter.iteye.com/blog/686460
NULL 博文链接:https://allenshao.iteye.com/blog/600252
一个简洁、实用、方便的Android异步处理库,已应用到百万日活的线上项目中
Termux:Task A Termux add-on app allowing Termux programs to be executed from Tasker. Termux:Task on Google Play Termux:Task on F-Droid License Released under the GPLv3 license. How to use Create a...
Android中的线程池与任务队列
这里是Android Hijacking,该代码主要使用了Intent Hijacking。劫持了QQ,并且窃取用户的QQ账号和密码并上传到服务器上存储!该代码包括服务端PHP,和Android端。
android任务管理器源代码,可以支持:任务切换、停止、卸载等等操作
android activity和taskandroid
跳转动画实现的一些方法涉及Style,task等知识点。这里关键在于Activity,Window,task等的跳转动画,关键在于使用Style实现。所以其实这里关键在于加强对风格的掌握。
In Android, there are always multiple ways to accomplish a given task. Practical Android will help you choose the best approach for your app and let you implement solutions quickly by leveraging ...
Simpletask See here for more information. Translation Simpletask is translated using weblate: Cloudless Cloudless stores tasks in a todo.txt file, which can be synced between devices with an ...
TimeTask是一个轻量简洁的定时任务队列框架,专注处理多组任务分发工作 TimeTask内部的实现时基于AlarmManager 广播,在任务与系统api中间做了较好的封装
You’ll build new Android programs and task-driven on-board workflows faster than any traditional Android development environment could hope to match! What You Need An Android smartphone or tablet ...
后台任务 BackgroundTask 是在后台线程中执行代码而不会在 Android 上发生内存泄漏的最简单方法。 ###Usage### BackgroundTask 必须被子类化才能使用。 子类将覆盖构造函数和 doInBackground() 方法。 private ...
Android Tutorial1 Android Tutorial2 官网中文教程 Design framework 2016.04.15 navigate draw Task1 2016.04.17 Task2 2016.04.19 Task3 2016.04.20 Figure out hybrid ARQ strategy Task4 2016.04.21...