android 入门 二

 昨天谈了点如何搭建环境以及运行一个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。这个等以后慢慢研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值