您的位置:首页 > 移动开发 > Android开发

android 入门 二

2016-03-28 00:31 295 查看
昨天谈了点如何搭建环境以及运行一个Hello World.就好像说我们终于会煮饭了,有锅有米加水,插上电源,OK了,今天我们试着做一下蛋炒饭,俗话说 最简单最困难。

1.其实自己动手做一遍前面的Hello World 我相信你也知道创建一个app 分三个部分,视图:也就是res里layout的xml文件展示的内容, 控制代码:每一个Activity,以及R.java文件 这是系统自动帮我们生成的 所以只要你保存了xml,R文件里自动生成一个ID与之对应,在Activity中通过R.xx.xxx_xx就可以调用了,也可以随意的更改这些内容,这就是运行的基本过程。

2.前面介绍的只是一个Activity,那么要进行界面之间的跳转如何实现呢? 对,我们需要重新建一个Activity,那么有了这个Actvity怎么联系起来呢,Web里有href,url,src,等属性,这里是通过Intent这个对象来实现的,这里就有很多东西在里面了,不着急,我们慢慢谈:

这里的Intent实现的跳转有两种方式, 显式 与 隐式 顾名思义

显式:通过startActivity(xxx.this,xxx.class);

隐式: 实质为 你给这个activity 设定 action 与 category 的类型 之后系统会通过AndroidManifest.xml中注册的Activity 里 <intent-filter>的 action 与 category 的类型 相比较 找出最合适的来响应这个跳转,当然 这里的跳转也可以跳转到其它的应用程序,比如Browser,,拨号程序,邮件
可以去百度相关代码,但注意 这里隐式跳转时 需要在xml中加入<data>的相关数据。

显式跳转里还有个 startActivityForResult()方法 这个方法的好处在于 能够向跳转的界面获取数据,比方说A->B 跳转之后B界面 B的activity中通过调用setResult()方法来返回数据给A界面,A必须实现onActivityResult()方法来接受这个数据。

Intent用来跳转,存放数据时用过intent.putExtra()存入数据,其实用Bundle更好,为什么 目前我还不知道,所以你可以查下文档关于Bundle的说明。

3.这里我们已经介绍了页面的跳转,我相信,你是可以以此类推,凡是页面跳转的东西,你也应该看的懂了,接下来我要介绍下 Activity的生命周期:

这是个让我惊喜的东西!简单点说 就是一个东西存在到消亡的过程,任何事物都有,Activity也不例外。

1 出生:onCreate() 一个周期内只运行一次

2 生长:onStart() 从不可见 到 可见

3 开花:onResume() 正在运行,你直接看见的

4 凋谢:onPause() 跳转到其他页面 但还是可见的

5 枯萎:onStop() 可见到不可见

6 死亡:onDestroy() 生命结束 一个周期内只运行一次

7 重生:onRestart() 重新运行

这里的顺序只有6 7 顺序不对,因为死亡只能死一次,你又不是九条命的猫(kill -9) 这里当我们打开一个app的时候 它会从 1 -> 2 ->3 定格住 我们如果点击按钮跳转到其它页面 当然这里就要说明一下 是跳转到对话框 或者 是其它的页面 , 打开 对话框 ,之前的activity还是可见的 所以就不会调用onStop()方法 如果是其它的 则会 4 -> 5 当Back时 如果是对话框 则只会 3 如果是其它的 则会 7 -> 2 -> 3 这个我说了不算,你还是通过Log.d()打印
调试一遍 来的直接。代码也不需要你敲,网上copy就行。

这里要介绍一个东西叫做 栈,这个东西会存放我们正在运行和运行过的Activity的, 正在运行的放 栈顶 ,当生命周期结束 这个Activity将从栈顶移除,将它下面的Activity移到栈顶运行,所以这个叫做 先进后出的 栈,当跳转到新的Activity的时候 ,会将新的Activity压入栈中。

既然说到这里了 ,还要介绍一个东西,就是Activity的启动模式,一共有四种,standard,singleTop singleTask singleInstance最后一个尤为重要,因为它是可以与其它应用程序共享Activity的一种模式,原理就是新建一个栈 来存放这个共享的Activity。我目前还没发现有什么用,但感觉是比较重要的。

谈谈一些小技巧:

都知道 在运行程序的时候想知道当前实例类名,android里的方法是 getClass().getSimpleName() 你可以通过一个BaseActivity extends Activity来实现,这样 只要extends BaseActivity的都可以打印出相应的信息。

上面如果有方法或者名词打错的 请纠正,因为我也是靠记忆来写的,最后说说我今天遇到的小问题,我是用真机调试的,上次说了 一般连接不上是手机驱动问题,今天我手机连上了,然而控制台一直跳个不停,DeviceManager的 连接不上 然后就是框几 1,2,3,4,5,6,7到11不停的跳 后来查了 可能是自己任务管理器的adb.exe程序太多导致的,至于为什么会这样,我猜 是因为我经常运行程序的时候 不把前面一个程序关闭掉,就直接run了,也有可能是360。这个等以后慢慢研究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: