Android中的一些基础知识(二)

这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看。

   

  • 简单介绍一下Activity的生命周期 
    API文档中对生命周期回调的函数描述的很详细,这里我只是翻译了一下。
    • onCreate:当Activity第一次被创建的时候调运。应该在这个回调函数中做所有的初始化操作,比如:创建View,给lists绑定数据等。在这个函数执行完后,通常会调运onStart方法。Always followed by onStart()(这句就不用翻译了吧)
    • onRestart:当Activitystop后,有重新启动的时候调运。Always followed by onStart()(这句就不用翻译了吧)
    • onStart:当Activity对用户可见之前调运。当Activity要显示到前台(对用户可见)时,Followed by onResume();当Activity要隐藏时,Followed by onStop()
    • onResume:当Activity开始用用户交互的时候回调此方法。此时这个ActivityActivity栈的顶端。Always followed by onPause().
    • onPause:当系统准备打开另一个Activity的时调用。此方法通常被用来保存当前的数据、停止动画、一些消耗cpu的操作等。并且应该处理的很及时。
    • onStop:当Activity对用户不可见的时候调运。
    • onDestroy:在Activity被销毁之前调运。
      Activity
      的这几个生命周期函数是成对出现的:onCreateonDestroyonStartonStopActivityView已被创建,但对用户不可见),onResumeonPauseActivity对用户仍然可见)。

   

  • 如果Activity A正在运行,现在打开Activity BActivity AB的生命周期方法的执行顺序是怎样的? 

Android API中是这样onPause方法的:

Called when the system is about to start resuming another activity.

它是说当系统准备打开另一个Activity的时候调用onPause方法。因此,此过程应该是这样的:

通过运行程序,打印log,也可以验证这个的结论,log截图如下: 

  • 两个Activity之间怎么传递数据?
    基本的数据可以通过IntentputExtra()来传递,如果是其他数据类型,可以通过IntentputExtras()来传递,此时改函数里需要传递一个Bundle类型的数据,Bundle可以通过如下两种方式来创建

       

1 Bundle bundle=new Bundle();
2 bundle.putSerializable("data",obj);

或者

1 Bundle bundle=new Bundle();
2 bundle.putParcelable("data",obj);

其中 obj分别需要继承自Serializable或者Parcelable。这里说一下Serializable和Parcelable是区别。Serializable是Java中的,它是将数据以二进制的形式写入的文件中来保存的,需要时就从文件中读取。而Parcelable是Android中独有的,它是将数据写入到内存中,用的时候直接从内存中度取,因此效率较高,但是Parcelable不能放较大的数据,因为这样会导致OOM。

    描述一下Service的生命周期、启动方式及区别、如何停止Service 

  • Service的生命周期中被调用的方法有:onCreateonStartonDestroyonBindonUnbind,显然比Activity的少许多。 
    Service
    的启动方式有两种:

    • 通过startService 
      Service
      会经过onCreateonStart,然后运行,在调用stopService时,会回调onDestroy方法,停止Service。如果此种情况下打开ServiceActivity退出前不调运stopService,次Service会一直运行,直至被系统回收(当系统内存不够时)。
    • 通过bindService 
      Service
      会经过onCreateonBind,然后运行,在调用unBindService时,会回调onDestroy方法,停止Service。如果此种情况下打开的Service会和打开它的Activity绑定在一起,Activity销毁,Service也被销毁。

    注:一个Service只会被创建一次,当它执行完onCreate方法后,调运再startService,只会执行onStart方法,调运再bindService,只会执行onBind方法。 
    startService只能调运stopService来停止Service,被bindService只能调运unBindService来停止Service。同时调运了startbindService则分别需要调运stopServiceunBindService来停止Service。当然,由于系统内存不够,Service被回收的情况例外。

     

转载于:https://www.cnblogs.com/yxx123/p/5272832.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于Open browser failed!! Please check if you have installed the browser chrome correctly!错误的一种解决方法

新建一个文件夹,再在新建的文件夹里写html文件,再用快捷键:altb打开即可。

前端学习(1806):前端调试之列表伪类练习二

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

虚拟机安装

带你解密Linux的【Vm】-CSDN博客https://blog.csdn.net/lz17267861157/article/details/134031133

推荐开发工具系列之--LinrF5(自动刷新)

最近有点事&#xff1b;略忙&#xff1b;以至于上篇文章说好的明天一直到了今天才到&#xff1b; //*******************************分割是会呼吸的痛****************************** 作为一个程序员&#xff1b;尤其是作为一个网站开发程序员&#xff1b;如果再更尤其点作为一…

前端学习(1807):前端调试之列表伪类练习三

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

关于win32与win64的兼容性问题

源代码&#xff1a; &#xff08;操作系统作业&#xff09;printf("\nMemory attached at %X\n",(int)shm); shm是个char*地址&#xff1b; gcc编译出现警告&#xff1a;lcylcy-Lenovo-R720-15IKBN:~ $ gcc -o shmread shmread.c shmread.c: In function ‘main’:…

前端学习(1812):前端调试之shadow练习

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

bullet HashMap 内存紧密的哈希表

last modified time&#xff1a;2014-11-9 14:07:00 bullet 是一款开源物理引擎&#xff0c;它提供了碰撞检測、重力模拟等功能&#xff0c;非常多3D游戏、3D设计软件&#xff08;如3D Mark&#xff09;使用它作为物理引擎。作为物理引擎&#xff0c;对性能的要求是非常苛刻的&…

前端学习(1813):前端调试之微博个人banner开发

index.html <!DOCTYPE html> <html lang"en"><head> <!--系统内置 start--> <script type"text/javascript"></script> <!--系统内置 end--><meta charset"UTF-8"><title>微博实战--ban…

操作系统课设——设计模拟一个SPOOLING假脱机输出程序

广州大学操作系统课程设计报告 要求&#xff1a;书写课程设计报告&#xff0c;报告中应该包含如下内容&#xff1a; 一&#xff0e;课程设计题目及内容 课程设计题目&#xff1a;题目三&#xff1a; 设计模拟一个SPOOLING假脱机输出程序 &#xff08;1&#xff09; 系统设计要…

操作系统实验——进程管理与进程通信

广州大学学生实验报告 实验一 进程管理与进程通信 一、实验目的 1、掌握进程的概念&#xff0c;明确进程的含义。 2、认识并了解进程并发执行的实质&#xff0c;进程的阻塞与唤醒&#xff0c;终止与退出的过程。 3、熟悉进程的睡眠、同步、撤消等进程控制方法。 4、分析进程…

前端学习(1815):前端调试之css flex 练习1

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8" /><meta name"viewport…

关于操作系统的学习总结

学了一学期的操作系统&#xff0c;就瞎写点东西反思一下吧。 我是广州大学计算机科学与技术专业的&#xff0c;操作系统的知识是比较抽象的。第一看书时必要的。我们的操作系统课程是张艳玲副教授授课的。张老师讲课认真&#xff0c;是一个不错的老师。我们上课用的课本是这本…

iis6 配置python CGI

打开iis管理器&#xff0c;在Web服务扩展中添加一个新的Web服务扩展 点击添加&#xff0c;浏览找到python的目录&#xff0c;文件类型改为CGI exe文件 选择python.exe 然后在目录后添加 %s %s&#xff08;搜了一圈&#xff0c;还没找到原因&#xff09; 确定就行&#xff0c;然…

广州大学专业选修课介绍-----------Linux操作系统分析及实践

教材&#xff1a; 课程内容&#xff1a;你去看一下课本就知道教什么了(●◡●) 考核方式&#xff1a;考察

今天课堂总结

1.带缓存的字符输入输出流 1 package com.xia;2 3 import java.io.BufferedReader;4 import java.io.BufferedWriter;5 import java.io.File;6 import java.io.FileReader;7 import java.io.FileWriter;8 9 public class test { 10 11 public static void main(String[] a…

微信服务项目表

本文介绍了方倍工作室对外提供的微信相关服务介绍&#xff0c;供有需要购买的客户进行参考。 免费服务图书购买语音问答代码视频技术咨询企业顾问定制服务服务内容微信基础教程常用代码下载微信完整教程图书源码下载发起问题查看他人答案微信高级代码微信开发视频微信开发技术技…

前端学习(1818):前端面试题之封装函数之进行字符串驼峰的命名

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><script type"text/javascript">//已知有字符串fooget-element-by-id,写一个function将其转化成驼峰表示法”getE…