java后台java开发思路和安卓java开发思路两者思路相通吗

有个疑惑.现在面临着方向的选择,走Java(服务器)方向还是安卓开发方向呢?
&有个疑惑,现在在读大二,学软件技术专业,也快到实习了,现在面临着方向的选择,走Java(服务器)方向还是安卓开发方向呢?两者在校内都是必修课程的,但是到实习的去做Java还是安卓开发,所以现在不知道侧重那个方向的学习,那个方向对以后发展更有前景,希望前辈给点建议,谢谢![63][63][63][63]&
看你喜欢的爱好
--- 共有 2 条评论 ---
这个不好说的,只能看你的喜好了
其实这两者思路相通吗?两者都干怎么样
其实是这样的,要学OOP,设计模式,web开发原理,还是学java web,但工作用PHP框架
--- 共有 1 条评论 ---
--- 共有 1 条评论 ---
为什么呢?
光搞Android开发不行,现在好多都是和前端混合开发,要是学Android就自学点前端的东西,最好也学点servlet、mysql,能自己实现数据交互。
要是学Java,最好学点js,现在node js能搞后端开发,wordpress最新版都换成了node,而且js有时也充当了控制层的作用。
现在大二,喜欢哪个方向就学哪个,最主要的是把Java基础打好,数据结构、计算机网络、操作系统一定要学好这些,等你找工作不一定做哪个方向,我们一起的朋友研究生学的图像处理,现在在公司也学JavaWeb呢。
我现在大四,这些是我的经验,希望能帮到你.
--- 共有 2 条评论 ---
大神请讲解下
与 wordpress的关系
师兄,可以加你qq吗,有时间交流下,我的
引用来自“kideny”的评论物是死的,人是活的,建议你学PHP。确实,我觉得PHP做得很好。经常看见做PHP的同事早早下班,而我们却因为各种BUG。我感觉Java 是一种很底层的语言和C++类似,因为是一种底层语言,所以很多东西都需要自己去配置,而不像.NET,C#那样已经有很好的封装了,所以很多时候,相同的功能,代码量Java要大很多,容易出错的几率也大很多,毕竟开发人员的水平也参差不平,而且开发的速度也远远不如他们。但每种语言能够生存都有它的道理,也没必要去争什么,其实每种语言都有它的寿命,如果想一直有所发展只有不断地去学习,不断的去努力。其实,不管是哪种语言,学的好,其实一生都是受用不尽。
--- 共有 2 条评论 ---
其实是这样的,要学OOP,设计模式,web开发原理,还是学java web,但工作用PHP框架
那你从服务端开始弄吧,以后选择的路子能广些
--- 共有 1 条评论 ---
为何这样说?
你可以并发
--- 共有 1 条评论 ---
怎么并发????
你不要纠结了,全栈才是你的归宿,多学点没有坏处!!
--- 共有 1 条评论 ---
全栈很累啊
物是死的,人是活的,建议你学PHP。
【纯个人意见】个人推荐做J2EE方向。直接安卓感觉容易路线越走越窄。
--- 共有 2 条评论 ---
【个人意见】会的。android 这个你可以整点开源项目玩玩。
j2ee路会走的更宽吗(03月17日)
(03月15日)
(03月15日)
(02月26日)
(02月24日)
(02月23日)
(02月23日)
(01月03日)
(01月03日)
(12月07日)
Android视频
Android培训课程
Android教程
达内时代科技集团有限公司 版权所有 京ICP证8000853号-56查看:18254|回复:11
高级工程师
Java作为一门语言,必然有他的语法规则。学习编程语言的关键之一就是学好语法规则,写作合乎语法规则的语句,控制计算机完成各种任务。而按编程语言的语法规则写成的,完成某项功能的代码集合就可以叫做程序。
一、初识对象(Object):
& && &&&“初识对象的时候我们还不知道什么是对象。”
& && &&&Java的一个重要特点就是面向对象(Object Oriented), 面向对象是相对于面向过程(Process Oriented)来说的。
& && & 我们用一个从冰箱中取一杯牛奶的例子来说明面向过程和面向对象的区别。
& && & 先用面向过程的思路描述这个过程:
& && &&&再用面向对象的思路描述这个过程:
& && & 我们把冰箱作为一个对象的时候,问题变得异常简单,冰箱有一个方法就是取牛奶的方法,你调用这个方法,这个方法的返回值就是一杯牛奶。那么现实生活中有这样智能的冰箱吗?有的,找个人站冰箱旁边就行了,把那个人和冰箱合起来包装成一个对象它就是智能冰箱对象了^_^ 。
& && & 面向对象的编程语言把所有事物都看成对象:万事万物皆对象。
& && & Java的程序就是一些对象的集合,这些对象通过调用彼此的方法与其他对象交互。每个对象都属于某种有一个类或者接口定义的类型。
二、标识符(Indentifier)
& && & Java语言中的类名、对象名、方法名、常量名等等这些Java组件都需要起个名字,在而这些组件的名称就被称为标识符(Indentifier)。
& && &&&合法的标识符具有一些命名规则:
& && &&&1.必须以字母、美元符号或下划线开头。数字不能开头
& && &&&2.第一个字符之后可以是任意长度的包含数字、字母、美元符号、下划线的任意组合。
& && &&&3.不能使用Java关键字和保留字做标识符
& && &&&4.标识符是大小写敏感的,Z和z是两个不同的标识符。
& && &&&5.Unicode字符会被视为普通字母对待。
& && && &针对最后一条,连SCJP(Sun Ceritified Java Programmer)考试也不会要求,但是你要了解,这样是可以的:
java代码:复制内容到剪贴板代码:public class Lesson02{public static void main(String[] args){String 世界 = &阿凡达!&;System.out.println(世界);}}三、关键字(keywords)
& && & 和所有的编程语言一样,Java具有一组内置的关键字,这些关键字绝对不能用来做为标识符。Java&&SE6里一共有50个关键字(keywords):
[td=128]abstract[td=128]continue[td=128]for[td=128]new[td=128]switch
[td=128]assert[td=128]default[td=128]goto[td=128]package[td=128]synchronized
[td=128]boolean[td=128]do[td=128]if[td=128]private[td=128]this
[td=128]break[td=128]double[td=128]implements[td=128]protected[td=128]throw
[td=128]byte[td=128]else[td=128]import[td=128]public[td=128]throws
[td=128]case[td=128]enum[td=128]instanceof[td=128]return[td=128]transient 瞬间
[td=128]catch[td=128]extentds[td=128]int[td=128]short[td=128]try
[td=128]char[td=128]final[td=128]interface[td=128]static[td=128]void
[td=128]class[td=128]finally[td=128]long[td=128]strictfp[td=128]volatile
[td=128]const[td=128]float[td=128]native[td=128]super[td=128]while
有三个看起来像是关键字,其实不是关键的东东,他们是字面值(literal),字面值的概念下面立刻就会讲到。
true布尔字面值
false 布尔字面值
null 空值字面值
四、变量(Variable)初识
& && & 所谓变量,就是值可以被改变的量。定义一个变量的时候不需要什么特殊的关键字修饰。
& && & 这个变量的概念很接近数学里变量的概念,举个例子
java代码:复制内容到剪贴板代码:public class Lesson02{ public static void main(String[] args){ String myName =&nabula&; myName = &nebulayao&; System.out.println(myName); } }五、常量(named constant、constant)初识
& && && &所谓常量,就是它的值不允许改变的量。要声明一个常量,就要用关键字 final 修饰,常量按照Java命名规范需要用全部大写,单词之间用下划线隔开:复制内容到剪贴板代码:// 游戏方向设定 北 南 东 西 final int NORTH = 1; final int SOUTH = 2; final int EAST = 3; final int WEST = 4; // 三种游戏元素 final int RED_STAR = 1; final int YELLOW_STAR = 2; final int GREEN_STAR = 3; //那么我真改了会怎么样呢?我们一起看看public class Lesson02{ public static void main(String[] args){ final int SOUTH =2; SOUTH =1; } }六、字面值(literal、literal value)
& && && &literal这个单词被翻译了好多种说法、字面值、字面量、直接量、常值、文本符等等,我们需要知道这些翻译都是一个意思,就是编程语言里一些内建数据类型的源代码表示。譬如:
1& && &&&42//整数字面值
2& && &&&false//布尔字面值
3& && &&&3.1415//double字面值
4& && &&&'b'//char字面值
七、基本数据类型(Primitive Type)
& && && &Java中数据类型(Data Type)分为基本数据类型(Primitive Type)和引用数据类型(Reference Data Type)。
& && && &Java中基本数据类型有八种:
1、整数(integer data type)
& && &&&Java语言中使用3中表示整数的方法,分别是十进制、八进制和十六进制,平时我们使用10进制,有时候也会用16进制,仅仅会因为趣味才会去用八进制。下面演示一下三种整型表示法:
java代码:复制内容到剪贴板代码:public class Lesson02{ public static void main(String[] args){ int i=10; //十进制直接写 int j=012; //八进制前面加0,八进制用0-7表示 int k=0 //十六进制前面加0x或者0X,16进制用 0-9 a-f 表示,为什么用 a-f,因为我们没有发明过 10-16的数字符号,这里的a-f x大小写都可以 int cafe = 0 //你觉得这个咖啡会等于几? System.out.println(i); System.out.println(j); System.out.println(k); System.out.println(cafe); } }[td=61]类型[td=58]字节[td=289]范围[td=232]举例
[td=61]byte[td=58]1[td=289]-128 ~ 127[td=232]125
[td=61]short[td=58]2[td=289]-32768 ~ 32767[td=232]20000
[td=61]int[td=58]4[td=289]- ~ [td=232]
[td=61]long[td=58]8[td=289]-5807[td=232]L
& && &&&整数里的默认类型是int,也就是说你写一个整数字面值如果不明确指定他的类型,那么他一定是int类型。
& && &&&想明确声明一个整数字面值是长整型的话,需要使用l或L做后缀。
java代码:复制内容到剪贴板代码:public class Lesson02{ public static void main(String[] args){ byte a= 127; short b= 128; int c=; long d=l; long e=L; System.out.println(&a=&+a+& b=&+b +& c=&+c+& d=&+d+& e=&+e); } }2、浮点数(floating-point data type)
[td=50]类型[td=40]字节[td=307]范围[td=243]举例
[td=50]float[td=40]4[td=307]1.4E-45 ~ 3.[td=243]3.1415f
[td=50]double[td=40]8[td=307]4.9E-324 ~ 1.[td=243]3.5d复制内容到剪贴板代码:public class Lesson02{ public static void main(String[] args){ float a= 3.1415926f; double b= 3.1415926; float c=; float d=L; double e=L; System.out.println(&a=&+a+& b=&+b +& c=&+c+& d=&+d+& e=&+e); System.out.println(Float.MIN_VALUE); System.out.println(Float.MAX_VALUE); System.out.println(Double.MIN_VALUE); System.out.println(Double.MAX_VALUE); } }如果你想定义一个单精度浮点数字面量,那么你必须加f或F做后缀。
& && & 浮点数当然也可以存整数在里面。
3、布尔型(boolean)
& && & 布尔型表达一个真或假,是或否的意思。在Java中使用boolean关键字来声明一个变量为布尔类型,在Java中布尔字面值只有2个:true 和 false。注意是全小写的。复制内容到剪贴板代码:public class Lesson02{ public static void main(String[] args){ boolean flag = flag= System.out.println(&flag=&+flag); } }4、字符型(char)
& && && &Java里用一个单引号内的单个字符来表示一个字符字面值。
[td=160]类型[td=160]字节[td=160]范围[td=160]举例
[td=160]char[td=160]2字节,16位[td=160]‘\u0000’ ~ ‘\uFFFF’[td=160]‘犇’,'\u004e’,’n’,23002复制内容到剪贴板代码:public class Lesson02{ public static void main(String[] args){ char a= 'a'; //ascii字符可以 char b='1'; char c= '犇'; //汉字也可以 char d='\u004e'; //其实上所有的Unicode字符都可以 char e='\n'; //转义符表示的字符也可以 char f=65535; //也可以,因为char存储的时候占两个字节,因为他不是整数,所以不需要符号位,因此它的最大值就是65535了。 char g=23002; char h=36745; System.out.println(&a=&+a+& b=&+b +& c=&+c+& d=&+d+& e=&+e+& f=&+f+& g=&+g+& h=&+h); } }上面的例子,如果文件以utf-8编码存储,那么编译时会报错,
& && && &因为命令行方式它人默认编码集是GBK,所以编译时请特别指出编码集为utf-8,方法如下:
八、赋值(assignment)初识
& && & “=” 是个赋值运算符,我们讲运算符之前先把赋值运算符先行提出来讲一讲。他和数学里的用法一样,都是把右侧的值赋予左侧的变量。
& && & 下面用例子演示一下三种赋值方式:复制内容到剪贴板代码:public class Lesson02{ public static void main(String[] args){ int a=1; int b=1,c=1; int d=a=b=c=2; System.out.println(&a=&+a+& b=&+b +& c=&+c+& d=&+d); } }九、注释(annotation)初识
& && & 程序中的注释是程序设计者与程序阅读者之间沟通的手段,是写给程序员看的代码。通常情况下编译器会忽略注释部分,不做语法检查。
& && &&&好的注释可以改善软件的可读性,可以让开发人员更快理解新的代码。
& && &&&好的注释可以最大限度的提高团队开发的合作效率。
& && & 长期的注释习惯可以锻炼出更加严谨的思维能力。
& && & Java中的注释有三种:
& && &&&// 注释一行
& && &&&/* 注释若干行&&*/
& && &&&/** 注释若干行,并写入 javadoc 文档&&*/
好了,本讲就到这里,下一讲我们讲基本类型的相互转换和赋值
一、基本数据类型之间的转换
& && & 所谓数据类型转换就是将变量从当前的数据类型转换为其它数据类型,类型转换在Java里是个很严肃的事情^_^ ,我们现在讲解基本数据类型之间的转换。
& && & 先搞定布尔类型,布尔类型无法和其它基本数据类型之间发生任何方式的转换。
& && & 数字型的基本数据类型之间可以通过下面两种方式实现转换。
& && & 1、自动类型转换
& && & a、当把一个取值范围小的基本数据类型赋值给一个取值范围大的基本数据类型时,Java编译器会帮你完成类型转换。
& && & b、还有一个秘密:“字面值的整数永远隐含着的意思是它是个int”,当把一个在byte允许的取值范围的int字面值赋予一个byte类型的变量时,编译器会自动帮你完成。
java代码复制内容到剪贴板代码:public class Lesson03_1{ public static void main(String[] args){ byte byte1=100; short short1=10000; char char1= 23002; int int1= 1000000; long long1= L; float float1= .12345f; double double1= .; short short2=byte1; // byte byte2=short1; } }上面的例子中 byte能转换成short,short不能转换成byte,这就是自动类型转换,自动类型转换不会损失精度。那么现在的问题是上面的程序如果强行编译会怎么样,编译器说了,把short转成byte可能会损失精度!那么把10000存入byte会的确会损失精度,那么把值是100的short类型数字存入byte肯定不会损失精度,那么编译器会怎么看待这件事情?我们问去采访一下它,改程序成这样:
java代码:复制内容到剪贴板代码:public class Lesson03_2{ public static void main(String[] args){ short short1=100; byte byte1=short1; } }我们看到编译器并不买账,我们看到编译器只对整数字面值的大小有感知,对这种从大到小的类型转换是坚决不允许的,那么如何解决这个问题,就要用到后面讲的强制类型转换。
2、强制类型转换
& && & 我们把上面的程序再改一下:复制内容到剪贴板代码:public class Lesson03_2{ 我们发现这一次成功了,加一个括号,里面写一上要转换的类型,就搞定了。强制类型转换果然很强!
& && & 强制类型转换的副作用也是有的,那就是的确可能导致精度丢失(数字不准确):
java代码:复制内容到剪贴板代码:public class Lesson03_2{ public static void main(String[] args){ short short1=250; byte byte1=(byte)short1; System.out.print(byte1); } }这段代码的打印值是-6,我想这是大家都不愿意看到的情形。了解了强制类型转换的特点我们使用的时候就会特别留意,自然就不会出问题^_^。
& && &&&二、引用数据类型(Reference Data Type)
& && &&&和基本数据类型对应的就是引用数据类型,引用数据类型包括类应用、接口引用和数组引用。因为这三个东西大家还都没有学,所以这里只是让他们和大家见个面,混个脸熟,直接上代码:
java代码:复制内容到剪贴板代码:import java.util.L public class Lesson03_3{ //对象 static O //接口 static List list = //数组 static int[] public static void main(String[] args){ System.out.println(&object=&+object); System.out.println(&list=&+list); System.out.println(&months=&+months); } }我们看到引用数据类型中接口和对象的类型名都是首字母大写的,数组是带有方括号的。他们和基本数据类型有着明显的不同。
& && & 用一句话来说就是基本数据类型变量里存储的是数据本身,而引用数据类型变量里存储的是指向数据本身的地址。
三、字符串初识
& &&&字符串是程序开发中最常用的一种对象。关于对象我们有过一点点的了解,关于字符串我们也先啊和他见见面,以后会慢慢熟悉起来的。下面我们用一个字符串来举例理解引用数据类型在内存中的存储情况:
java代码:复制内容到剪贴板代码:public class Lesson03_4{ public static void main(String[] args){ String name1=&nebulayao&; String name2= name2=name1; System.out.println(&name2=&+name2); } }字符串是程序开发中最常用的一种对象。关于对象我们有过一点点的了解,关于字符串我们也先啊和他见见面,以后会慢慢熟悉起来的。下面我们用一个字符串来举例理解引用数据类型在内存中的存储情况:
java代码:
嗯,不错的内容。
本帖最后由 苍岚 于
10:29 编辑
引用:原帖由 苍岚 于
10:28 发表
Java作为一门语言,必然有他的语法规则。学习编程语言的关键之一就是学好语法规则,写作合乎语法规则的语句,控制计算机完成各种任务。而按编程语言的语法规则写成的,完成某项功能的代码集合就可以叫做程序。
一、初识对 ... 呵呵,多谢分享了。
写的这是什么嘛
高级工程师
引用:原帖由 tiankafei888 于
09:18 发表
写的这是什么嘛 看标题应该就知道了~
讲得很详细
基础知识差&&还没怎么看明白&&看样子要多学习啦
嗯,比较基础,很详细,学习了!
中级工程师
论坛首席砖家
虽然是复制,不过很不错了。省得我去搜索了。
要好好学习啊!饭碗有危机啊!
好贴 受用了
引用:原帖由 OH51888 于
19:25 发表
虽然是复制,不过很不错了。省得我去搜索了。 安卓学习指南之java基础
好贴,比看书来得快多了。您当前所在位置: >
> 移动开发
Android开发四大组件的过程及方法
这是我们为大家提供的一篇介绍Android开发四大组件的过程及方法的文章,接下来就让我们一起来了解一下吧!一、Activity详解Activty的生命周期的也就是它所在进程的生命周期。一个Activity的启动顺序:onCreate()――&onStart()――&onResume()当另一个Activity启动时:第一个Activity onPause()――&第二个Activity& &&onCreate()――&onStart()――&onResume()――&第一个Activity& &onStop()当返回到第一个Activity时:第二个Activity onPause()&――&&第一个Activity onRestart()――&onStart()――&onResume()――&第二个Activity& &onStop()――&onDestroy()一个Activity的销毁顺序:(情况一)onPause()――&(情况二)onPause()――&onStop()――&(情况三)onPause()――&onStop()――&onDestroy()每一个活动( Activity )都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。但是当一个活动的状态发生改变的时候,开发者可以通过调用 onXX() 的方法获取到相关的通知信息。在实现 Activity 类的时候,通过覆盖( override )这些方法即可在你需要处理的时候来调用。1、 onCreate&:当活动第一次启动的时候,触发该方法,可以在此时完成活动的初始化工作。onCreate 方法有一个参数,该参数可以为空( null ),也可以是之前调用 onSaveInstanceState ()方法保存的状态信息。2、&&onStart&:该方法的触发表示所属活动将被展现给用户。3、&&onResume&:当一个活动和用户发生交互的时候,触发该方法。4、&&onPause:当一个正在前台运行的活动因为其他的活动需要前台运行而转入后台运行的时候,触发该方法。这时候需要将活动的状态持久化,比如正在编辑的数据库记录等。5、&&onStop&:当一个活动不再需要展示给用户的时候,触发该方法。如果内存紧张,系统会直接结束这个活动,而不会触发 onStop 方法。 所以保存状态信息是应该在onPause时做,而不是onStop时做。活动如果没有在前台运行,都将被停止或者Linux管理进程为了给新的活动预留足够的存储空间而随时结束这些活动。因此对于开发者来说,在设计应用程序的时候,必须时刻牢记这一原则。在一些情况下,onPause方法或许是活动触发的最后的方法,因此开发者需要在这个时候保存需要保存的信息。6、onRestart&:当处于停止状态的活动需要再次展现给用户的时候,触发该方法。7、 onDestroy:当活动销毁的时候,触发该方法。和 onStop 方法一样,如果内存紧张,系统会直接结束这个活动而不会触发该方法。&& && &&&onSaveInstanceState :系统调用该方法,允许活动保存之前的状态,比如说在一串字符串中的光标所处的位置等。通常情况下,开发者不需要重写覆盖该方法,在默认的实现中,已经提供了自动保存活动所涉及到的用户界面组件的所有状态信息。Activity栈上面提到开发者是无法控制Activity的状态的,那Activity的状态又是按照何种逻辑来运作的呢?这就要知道 Activity 栈。每个Activity的状态是由它在Activity栈(是一个后进先出LIFO,包含所有正在运行Activity的队列)中的位置决定的。当一个新的Activity启动时,当前的活动的Activity将会移到Activity栈的顶部。如果用户使用后退按钮返回的话,或者前台的Activity结束,活动的Activity就会被移出栈消亡,而在栈上的上一个活动的Activity将会移上来并变为活动状态。如下图所示:一个应用程序的优先级是受最高优先级的Activity影响的。当决定某个应用程序是否要终结去释放资源,Android内存管理使用栈来决定基于Activity的应用程序的优先级。Activity状态一般认为Activity有以下四种状态:活动的:当一个Activity在栈顶,它是可视的、有焦点、可接受用户输入的。Android试图尽最大可能保持它活动状态,杀死其它Activity来确保当前活动Activity有足够的资源可使用。当另外一个Activity被激活,这个将会被暂停。暂停:在很多情况下,你的Activity可视但是它没有焦点,换句话说它被暂停了。有可能原因是一个透明或者非全屏的Activity被激活。当被暂停,一个Activity仍会当成活动状态,只不过是不可以接受用户输入。在极特殊的情况下,Android将会杀死一个暂停的Activity来为活动的Activity提供充足的资源。当一个Activity变为完全隐藏,它将会变成停止。停止:当一个Activity不是可视的,它“停止”了。这个Activity将仍然在内存中保存它所有的状态和会员信息。尽管如此,当其它地方需要内存时,它将是最有可能被释放资源的。当一个Activity停止后,一个很重要的步骤是要保存数据和当前UI状态。一旦一个Activity退出或关闭了,它将变为待用状态。待用: 在一个Activity被杀死后和被装在前,它是待用状态的。待用Acitivity被移除Activity栈,并且需要在显示和可用之前重新启动它。activity的四种加载模式在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。在android里,有4种activity的启动模式,分别为:&standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。&singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。&singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。&singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,中的launchMode属性。相关的代码中也有一些标志可以使用,比如我们想只启用一个实例,则可以使用 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 标志,这个标志表示:如果这个activity已经启动了,就不产生新的activity,而只是把这个activity实例加到栈顶来就可以了。Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);startActivity(intent);复制代码Activity的加载模式受启动Activity的Intent对象中设置的Flag和manifest文件中Activity的元素的特性值交互控制。下面是影响加载模式的一些特性核心的Intent Flag有:FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_RESET_TASK_IF_NEEDEDFLAG_ACTIVITY_SINGLE_TOP核心的特性有:taskAffinitylaunchModeallowTaskReparentingclearTaskOnLaunchalwaysRetainTaskStatefinishOnTaskLaunch四种加载模式的区别所属task的区别一般情况下,“standard”和”singleTop”的activity的目标task,和收到的Intent的发送者在同一个task内,就相当于谁调用它,它就跟谁在同一个Task中。除非Intent包括参数FLAG_ACTIVITY_NEW_TASK。如果提供了FLAG_ACTIVITY_NEW_TASK参数,会启动到别的task里。“singleTask”和”singleInstance” 总是把要启动的activity作为一个task的根元素,他们不会被启动到一个其他task里。是否允许多个实例“standard”和”singleTop”可以被实例化多次,并且是可以存在于不同的task中;这种实例化时一个task可以包括一个activity的多个实例;“singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。singleTop 要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不创建新的实例。是否允许其它activity存在于本task内“singleInstance”独占一个task,其它activity不能存在那个task里;如果它启动了一个新的activity,不管新的activity的launch mode 如何,新的activity都将会到别的task里运行(如同加了FLAG_ACTIVITY_NEW_TASK参数)。而另外三种模式,则可以和其它activity共存。是否每次都生成新实例“standard”对于每一个启动Intent都会生成一个activity的新实例;“singleTop”的activity如果在task的栈顶的话,则不生成新的该activity的实例,直接使用栈顶的实例,否则,生成该activity的实例。比如:现在task栈元素为A-B-C-D(D在栈顶),这时候给D发一个启动intent,如果D是 “standard”的,则生成D的一个新实例,栈变为A-B-C-D-D。如果D是singleTop的话,则不会生产D的新实例,栈状态仍为A-B-C-D如果这时候给B发Intent的话,不管B的launchmode是”standard” 还是 “singleTop” ,都会生成B的新实例,栈状态变为A-B-C-D-B。“singleInstance”是其所在栈的唯一activity,它会每次都被重用。“singleTask” 如果在栈顶,则接受intent,否则,该intent会被丢弃,但是该task仍会回到前台。 当已经存在的activity实例处理新的intent时候,会调用onNewIntent()方法,如果收到intent生成一个activity实例,那么用户可以通过back键回到上一个状态;如果是已经存在的一个activity来处理这个intent的话,用户不能通过按back键返回到这之前的状态。-----------------------------------
上一篇:下一篇:
本文相关阅读
高校查询分数线
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
地区批次线查询
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
科目理科文科综合其他
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
院校所在地北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
其它中央部委
类型工科农业师范民族
层次本科高职(专科)
高考志愿③部曲
频道热门推荐
栏目最新更新

我要回帖

更多关于 java安卓开发 的文章

 

随机推荐