zoukankan      html  css  js  c++  java
  • 活动组件(五):一个activity的例子

    建立两个Activity,一个是NormalActivity,另一个是DialogActivity。首先建立这两个Activity的布局文件,如下图:

    然后编写这连个Activity,如下:

    接着对这两个个活动进行注册,但是从上面看来,这两个活动都是普通的活动,怎么将DialogActivity设置为对话框模式呢?在注册时候将DialogActivity的主题设置为对话框模式就可以了,如下:

    然后修改MainActivity,如下:

    MainActivity的布局文件如下:

    活动的回收问题

          当一个活动进入到停止状态之后,是有可能被系统回收的,那么加入有一个活动A,用户在A的基础上又启动了B,活动A就进入了停止状态,这个时候由于系统内存不足,将活动A回收掉了,然后用户按下了Back键回到了活动A,也还是会正常显示活动A的,只不过这时候并不执行onRestart()方法,而是会执行活动A的onCreate()方法,因为活动A在这种情况下会被重新创建一遍。但是如果在活动A中有一个文本输入框,已经输入了一些内容,再次创建的时候,之前输入的内容会全部丢失,那么这将严重影响用户体验。

          查阅文档可知,Activity中还提供了一个onSaveInstanceState()的回调方法,这个方法会保证一定在活动被回收之前调用,可以使用这个方法来解决活动被回收时临时数据得不到保存的问题。

    那么在onCreate()方法中可以这样写:

    Bundle保存数据的方式跟Intent保存数据的形式相似。Intent还可以结合Bundle一起用于传递数据,首先将需要传递的数据保存在Bundle对象中,然后将Bundle对象放在Intent中,到了目标活动之后先从Intent中取出Bundle,再从Bundle中取出数据。

  • 相关阅读:
    在Unix上使用管道压缩exp导出文件
    自制CPU的黑暗历程一
    Error C1189: #error: Please use the /MD switch for _AFXDLL builds
    Redis乐观锁解决高并发抢红包的问题
    PHP分页类
    汇编基础——使用nasm和bochs学习汇编
    数据同步工具DBsync
    完成端口的一些教程
    sdf
    (转)C#(WIN FORM)两个窗体间LISTVIEW值的修改
  • 原文地址:https://www.cnblogs.com/hujingwei/p/5102272.html
Copyright © 2011-2022 走看看