当前位置:文档之家› Android任务3 使用logcat查看activity生命周期

Android任务3 使用logcat查看activity生命周期

Android任务3 使用logcat查看activity生命周期
Android任务3 使用logcat查看activity生命周期

1创建AVD环境

(1) 打开sdk manager,并配置

2如何使用LOGCAT (1)打开window-〉showview-〉other菜单

(2)索引中输入Log,查看到Logcat打开

(3)首先我们看到了LOGCA T中页面比较多

(4)设置tag的过滤条件为Activity01,by Log Tag设置为Activity01

设置完成后显示如下

(5)Activity从被装载到运行。执行顺序为:onCreate()→onStart()→onResume();

(6)Activity从运行到停止。

执行顺序为:onPause()→onStop() ; 在Activity的UI完全被别的Activity遮住了,当然也失去了用户焦点。这个过程中Activity的实例仍然存在。比如,当Activity正在运行时,按HOME键,该Activity就会被执行这个过程。

(7)被清除出内存的Activity重新运行。

执行顺序为:onCreate()→onStart()→onResume();这个过程看起来如同1)的执行顺序,不同的是如果保存有系统被清除出内出时的信息,会在调用onCreate()时,系统以参数的

形式给出,而1)中onCreate()的参数为null。

3Activity实践1 import导入

File-import

选择导入文件的路径

选择导入的文件ActivityLifeCycle文件夹

配置选择对应的选项打勾

2 导入的代码需要首先运行,见下图

4 修改project.properties中的target=android-17

4 布局文件,新建布局文件

Copy main.XML文件到当前的文件夹,重名为main3.xml;

对main3.xml文件进行布局如下图

修改main.xml的布局如下:

5 新建一个Activity03.JA V A文件

类名写Activity03,superclass写为activity,用browse导入后点击finish

重写Oncreate 方法

6 将activity03注册到应用程序

加入tag标签

android实验报告

创建一个名为“登录页面”的布局文件,该文件用于展示登录信息。程序界面如下图所示:; public class Activity01 extends Activity { EditText name; EditText pass ; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); public void click(View view){ Intent intent1=new Intent(this,Mylayout1MainActivity.class); startActivity(intent1);} public void click1(View view){ SharedPreferences sf1=getSharedPreferences("account",Context.MODE_PRIVATE); String name1=sf1.getString("name",""); String pass1=sf1.getString("pass",""); String name2=name.getText().toString(); String pass2=pass.getText().toString(); if(name1.equals(name2)&&pass1.equals(pass2)){ Intent intent2=new Intent(this, Textview1.class); intent2.putExtra("name", name1);

Activity生命周期详解

学习并掌握Activity生命周期,对从事Android开发(或者打算日后从事这方面的开发工作)的朋友来讲,是至关重要的。本文将用图解和实例的方式,向大家详细讲解Activity 生命周期的有关知识。 Activity有三个状态: 1.当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。它就是响应用户操作的Activity。 2.当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时(如图),它处于暂停状态。在它之上的Activity没有完全覆盖屏幕,或者是透明的,被暂停的Activity仍然对用户可见,并且是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接)。如果系统处于内存不足时会杀死这个Activity。

3.当它完全被另一个Activity覆盖时则处于停止状态。它仍然保留所有的状态和成员信息。然而对用户是不可见的,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个Activity。 当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化: void onCreate(Bundle savedInstanceState) void onStart()

void onRestart() void onResume() void onPause() void onStop() void onDestroy() 这七个方法定义了Activity的完整生命周期。实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity 在onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程,而在onDestroy()销毁线程。 Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。onStart() 和onStop() 方法可以随着应用程序是否为用户可见而被多次调用。 Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换——例如当设备转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。当

Android生命周期详解

Android生命周期详解 在Android 中,多数情况下每个程序都是在各自独立的Linux 进程中运行的。当一个程序或其某些部分被请求时,它的进程就“出生”了;当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个进程就“死亡”了。可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制。这和我们编写桌面应用程序时的思维有一些不同,一个桌面应用程序的进程也是在其他进程或用户请求时被创建,但是往往是在程序自身收到关闭请求后执行一个特定的动作(比如从main 函数中return)而导致进程结束的。要想做好某种类型的程序或者某种平台下的程序的开发,最关键的就是要弄清楚这种类型的程序或整个平台下的程序的一般工作模式并熟记在心。在Android 中,程序的生命周期控制就是属于这个范畴——我的个人理解:) 在Android 系统中,当某个activity调用startActivity(myIntent) 时,系统会在所有已经安装的程序中寻找其intent filter 和myIntent 最匹配的一个activity,启动这个进程,并把这个intent 通知给这个activity。这就是一个程序的“生”。比如我们在Home application 中选择“Web browser”,系统会根据这个intent 找到并启动Web browser 程序,显示Web browser 的一个activity 供我们浏览网页(这个启动过程有点类似我们在在个人电脑上双击桌面上的一个图标,启动某个应用程序)。在Android 中,所有的应用程序“生来就是平等的”,所以不光Android 的核心程序甚至第三方程序也可以发出一个intent 来启动另外一个程序中的一个activity。Android 的这种设计非常有利于“程序部件”的重用。

基于android开发实验报告总结

基于android开发实验 报告总结 组员: 指导老师: 2016.12.15

目录 实验一 Android开发环境的搭建 (3) 1 实验目的及要求 (3) 2 实验设备(环境)及要求 (3) 3 实验内容 (3) 4 实验步骤 (3) 5 实验核心代码(关键代码),及调试中的问题 (4) 6 实验的运行结果及分析 (9) 3 实验设备(环境)及要求 (10) 实验三 GUI创建套件Widget的使用 (18) 1 实验目的及要求 (18) 2 实验设备(环境)及要求 (18) 3 实验内容 (19) 4 实验步骤 (19) 5 实验核心代码(关键代码),及调试中的问题 (19) 6 实验的运行结果及分析 (28) 实验四 SQLite应用 (29) 1 实验目的及要求 (29) 2 实验设备(环境)及要求 (30) 3 实验内容 (30) 4 实验步骤 (30) 5 实验核心代码(关键代码),及调试中的问题 (30) 6 实验的运行结果及分析 (41)

实验一 Android开发环境的搭建 1 实验目的及要求 1.搭建Eclipse+Android开发平台 2.创建简单的Android应用程序 3.创建Activity并利用intent的实现Activity的跳转 2 实验设备(环境)及要求 1)PC计算机 2)JDK安装包 3)Eclipse安装包 4)Android SDK安装包 5)ADT插件 3 实验内容 1)搭建Eclipse+Android开发环境 2)创建一个简单的”hello world”工程 3)创建两个Activity,实现简单的Activity之间的参数传递 4 实验步骤 1)下载安装JDK 1.6,配置环境变量,如果所示。

(完整版)Android应用开发期末考试题

试题 一、选择题 1 android虚拟设备的缩写是(AVD) 2 Android SDK目前支持的操作系统(DOS) 3 Android开发工具插件(ADT)没有提供的开发功能(自动更新) 4Android SDK提供一些开发工具可以把应用软件打包成Android格式文件(APK) 5 Android当中基本的所有的UI都是由(view)或者其子类实现的 6以下不是Android中调试项目的正确步骤(测试用例) 7下列不是Activity的生命周期方法之一的是(OnResume) 8以下可以做EditText编辑框的提示信息是(adroid:hint) 9以下不是Activity启动的方法是(gotoActivity) 10以下不是手机操作系统的是(windows vista) 二、填空题 1 Android平台由操作系统,中间件,用户界面和应用软件组成的。 2 Android平台提供了2D,3D的图形支持,数据库支持SQLite,并且集成了浏览器 3目前已知的可以用来搭建Android开发环境的系统有windows,Linux,Mac 等4开发中推荐使用的IDE开发组合为IDE,eclipse,ADI来开发 5 Android SDK主要以java语言为基础 6创建工程时需要填写的信息名称有工程名,包的名字,Activity的名字还有应用的名字

7 Android.jar是一个标准的压缩包,其内容包含的是编译后的class,包含了全部的API 三、简答题 1 Android SDK中API的包结构的划分?至少五个 android.util,android.os,android.content,android.view,android.graphics,android.text 2 Android软件框架结构自上而下可分为哪些层? 应用程序(Application)、应用程序框架(Application Framework)、各种库(Libraries)和Android运行环境(RunTime)、操作系统层(OS) 3 Android应用程序的4大组件是什么? Activity、Broadcast Intent Receiver、Service、Content Provider 4 Android应用工程文件结构有哪些? 源文件(包含Activity),R.java文件,Android Library,assets目录res目录,drawble目录,layout目录,values目录,AndroidManifest.xml 5 Android开发应用程序最有可能使用到的应用框架部分是哪些? 一组View(UI)组件,Content Providers,Resource Manger,Notification Manger,Activiy Manger 6 Android底层库包含哪些? 系统C库,媒体库,Surface Manager,LibWebCore,SGL 四、编程 1实现点击一个按钮,结束当前Activity并将需要返回的数据放置并关闭当前窗体请编写核心代码 Bundle bundle = new Bundle ( ); Bundle.putString(“store”,”数据来自Activity1”) ;

Android实验一实验报告

Android实验报告一 姓名:丁军峰 班级:信科12-3 学号:08123448

一、实验内容 编写一个Android应用程序,实现对自己物品的管理,功能包括添加、删除和查询等 二、实验目的 了解android开发流程,掌握SQLite数据库和ListView控件的使用三、需求分析 使用SQLite数据库,使用ListView控件显示物品 四、实验过程 1.创建程序,设计用户交互界面

Android基础——Activity生命周期以及观察者模式应用

Android系统架构 Android目录结构 1.src目录 src目录中存放的是该项目的源代码,其内部结构会根据用户所声明的包自动组织,该

目录的组织方式为src/com/jiang/Main.java,程序员在项目开发过程中,大部分时间是对该目录下的源代码文件进行编写。 2.gen目录 该目录的文件是ADT自动生成的,并不需要人为地去修改,实际上该目录下只定义了一个R.java文件,该文件相当于项目的字典,项目中用户界面、字符串、图片、声音等资源都会在该类中创建其唯一的ID,当项目中使用这些资源时,会通过该类得到资源的引用。 3.Android2.2 该目录中存放的是该项目支持的JAR包,同时还包含项目打包时需要的META-INF目录。 4.assets目录 该目录用于存放项目相关的资源文件,例如文本文件等,在程序中可以使用”getResources.getAssets().open(“text.txt”)”得到资源文件的输入流InputStream对象。 5.res目录 该目录用于存放应用程序中经常使用的资源文件,包括图片、声音、布局文件及参数描述文件等,包括多个目录,其中以drawable开头的三个文件夹用于存储.png、.9.png、.jpg 等图片资源。layout文件夹存放的是应用程序的布局文件。raw用于存放应用程序所用到的声音等资源。value存放的则是所有XML格式的资源描述文件,例如字符串资源的描述文件strings.xml、样式的描述文件style.xml、颜色描述文件colors.xml、尺寸描述文件dimens.xml,以及数组描述文件arrays.xml等。 6.AndroidManifest.xml文件 该文件为应用程序定义了全局的配置信息。这个文件列出了应用程序所提供的功能,包括四大组件、版本、权限等等。在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。 android:versionCode是给设备程序识别版本(升级)。 android:versionName是给用户看的。 7.default.properties文件 该文件为项目的配置文件,不需要认为改动,系统会自动为其进行管理,其中主要描述了该项目的版本等信息。

Android基础实验

实验01 简单Android UI设计 【实验目的】 熟悉用Eclipse开发Android简单界面,锻炼简单Java代码编写。 【实验要求】 按要求设计一个Android活动窗体,并实现其功能。 学习材料:https://https://www.doczj.com/doc/595546103.html,/s/1geaFkzh 【示范模仿】 实验1.1 设计一个登入窗口,在一个可编辑文本框中输入某一用户名,输入相应密码,按【确定】按钮,若用户名不是“13rg”,则显示“用户名错误”。否则,若密码不是“1234”,则显示“密码错误”。当用户名输入“13rg”并且密码输入“1234”的情况下,显示“恭喜成功,欢迎进入系统!”。 (1) 进入Eclipse开发环境 单击桌面上Eclipse快捷键,打开Eclipse环境。 (2) 创建项目 单击“File”菜单下的“New”菜单项中的“Android Application Project”子菜单项,在“New Android Application”对话框中的Application Name文本框中输入app1_1,单击Next 按钮,在出现的新的对话框中都单击Next按钮,最后一个对话框单击Finish按钮,进入设计窗体。 (3) 添加控件 首先,单击左边文件夹列表中的res文件夹,再单击其下的layout文件夹,双击其下的activity_main.xml文件。单击Graphical Layout标签,进入可视设计界面,如图1-1。

图1-1 将Form Widgets等控件列表中的控件拖曳到可视设计窗口中。分别往窗体中添加3个TextView控件textView1~textView3、2个EditText控件editText1~editText1和1个Button 控件button1。 (4) 设置控件属性 控件属性设置如表1-1所示。 表1-1 控件属性设置 设置完控件属性后,窗体中控件及其布局如图1-1所示。 (5) 添加并编写控件事件代码 单击左边src文件夹,单击其下的com.example.app1_1,单击其下的MainActivity.java 文件,进入编码界面。 输入黄色底色的代码: package com.example.app1_1; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.doczj.com/doc/595546103.html,yout.activity_main); Button bt=(Button)findViewById(R.id.button1); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub EditText textBox1=(EditText)findViewById(R.id.editText1); EditText textBox2=(EditText)findViewById(R.id.editText2); TextView lb3=(TextView)findViewById(R.id.textView3); if (!textBox1.getText().toString().trim().equals("13rg"))

Android中的Activity的生命周期函数

Android开发历程_3(Activity生命周期) Activity中有7个与生命周期有关的函数。其中onCreated()是activity第一次被启动时执行的,主要是初始化一些变量,onRestart()是当前activity重新被启动时调用的;绑定一些监听器等;onStart()是activity界面被显示出来的时候执行的;onResume()是当该activity与用户能进行交互时被执行;onPause()是另一个activity被启动,当前的activity就被暂停了,一般在该函数中执行保存当前的数据;onStop()表示另一个activity被启动完成时,当前activity对用户同时又完全不可见时才调用的;onDestroy()是退出当前activity时调用的,当然如果程序中调用finish()或者说android系统当前资源不够用时就会被调用。 当用多个activity在执行时,这时候android系统会自动将这些activity压入栈中并且总是显示最顶的那个activity,这个栈在android叫做task,但是这个栈只支持压入和弹出操作,不支持排序插入等操作。 Activity的7个生命周期函数中的onStop()函数被调用时是在其对应的activity被另外的activity完全遮挡的时候,如果只有部分遮挡,则不会被调用。部分遮挡一般是以消息activtiy的形式出现,这个只需在AndroidManifest.xml中将其对于的activity的主题设置theme中更改即可。 这7个周期函数,当系统资源不够时,其中onPause(),onStop(),onDestroy()是有可能被系统kill掉的,但其它4个是不会被kill掉。 参考资料为mars老师的资料。 官方给出关于这7个生命周期的图如下:

实验二 android基本控件实验

实验二 android基本控件实验 【目的】 熟悉Android常用控件的基本操作,掌握它们的基本使用方法。了解控件之间的构成关系,熟悉适配器的使用原理。 【要求】 1、了解控件的继承关系; 2、掌握适配器的使用; 3、掌握信息提示的实现机制; 4、实现基本界面。 【原理】 1.控件类之间的关系 android.view.View类(视图类)呈现了最基本的UI构造块。View类是Android中的一个超类,几乎包含了所有的屏幕类型,主要负责绘制和事件处理。 Android中控件类的扩展结构如图所示。 View有众多的扩展者,它们大部分是在android.widget包中,这些继承者实际上就是Android 系统中的“控件”。View实际上就是各个控件的基类,创建交互式的图形用户界面的基础。View的直接继承者包括文本视图(TextView)、图像视图(ImageView)、进度条(ProgressBar)等。它们各自又有众多的继承者。每个控件除了继承父类功能之外,一般还具有自己的公有 方法、保护方法、XML属性等。 在Android中使用各种控件的一般情况是在布局文件中可以实现UI的外观,然后在Java文件中实现对各种控件的控制动作。控件类的名称也是它们在布局文件XML中使用的标签名称。

2.控件通用行为和属性 View是Android中所有控件类的基类,因此View中一些内容是所有控件类都具有的通用行为和属性。 提示:由于Java语言不支持多重继承,因此Android控件不可能以基本功能的“排列组合”的方式实现。在这种情况下,为了实现功能的复用,基类的功能往往做得较强,作为控件的祖先类,View所实现的功能也是最多的。 控件类经常在布局文件中使用,因此其可以使用XML属性(XMLAttributes),和Java代码经常具有对应关系。 View作为各种控件的基类,其XML属性所有控件通用,XML属性及其对应的方法如表1所示。 表1 View中的XML属性及其对应的方法 其中,android:id表示控件的标识,通常需要在布局文件中指定这个属性。View中与控件标识相关的几个方法如下所示: public int getId() // 获得控件的id(int类型)

黑马程序员安卓教程:Service 的生命周期回调函数

Service 的生命周期回调函数 和Activity 一样,service 也有一系列的生命周期回调函数,你可以实现它们来监测service 状态的变化,并且在适当的时候执行适当的工作。 Like an activity, a service has lifecycle callback methods that you can implement to monitor changes in the service's state and perform work at the appropriate times. The following skeleton service demonstrates each of the lifecycle methods: 13

下面的service展示了每一个生命周期的方法: 【文件1-5】Service生命周期回调函数 1.public class TestService extends Service { 2.int mStartMode; //indicates how to behave if the service is killed 3.IBinder mBinder;// interface for clients that bind 4.boolean mAllowRebind;// indicates whether onRebind should be used 5. 6.@Override 7.public void onCreate() { 8.// The service is being created 9.} 10. 11.@Override 12.public int onStartCommand(Intent intent, int flags,int startId){ 13.// The service is starting, due to a call to startService() 14.return mStartMode; 15.} 16. 17.@Override 18.public IBinder onBind(Intent intent) { 19.// A client is binding to the service with bindService() 20.return mBinder; 21.} 22. 23.@Override 24.public boolean onUnbind(Intent intent) { 25.// All clients have unbound with unbindService() 26.return mAllowRebind; 27.} 28. 29.@Override 30.public void onRebind(Intent intent){ 31.// A client is binding to the service with bindService(), 32.// after onUnbind() has already been called 33.} 34. 35.@Override 36.public void onDestroy(){ 37.// The service is no longer used and is being destroyed 38.} 39.} 注意:不同于Activity的生命周期回调方法,Service不须调用父类的生命周期回调方法。 Unlike the activity lifecycle callback methods,you are not required to call the superclass implementation of these callback methods. 14

Android程序开发实验报告

山西大学 物理电子工程学院 论文题目:基于Android系统的GPS 程序开发 学号:* 姓名:* * * 指导老师:* *

摘要 在日常生活中,我们经常需要知道自己的具体位置,尤其是在 旅游或陌生城市中。而手机作为目前最常见、最方便的电子信息载体,无疑是我们最好的选择。为了让智能手机用户能够随时随地查询GPS 所提供的服务,一种高效的办法就是将应用系统的功能拓展到手机终端上。本文选择的是最常见的Android系统的程序开发。对于软件从业人员来说,该平台具有无限的吸引力。 因此,本文首先介绍安卓系统在个人计算机上开发平台的搭建,并尝试在安卓系统上开发一款基于手机自带GPS组件的GPS应用。 关键字:Android,GPS,SDK,JDK,ADT,Eclipse 一引言 (一)开发背景 随着网络世界的深入生活,地球网络化已经是一条必然之路。而今后的网络也将逐渐的走向移动互联网的轨道。像手机,平板计算机,笔记本计算机等可以搭乘移动互联网的产品中使用人数最多的数码产品便是智能手机了。它已经在逐步的取代其他的电子产品的市场份额。据《2013-2017年中国智能手机行业市场需求预测与投资战略规划分析报告》估算,2012前三季度,全球智能手机用户总数已经突破了10亿大关。而2011前三季度的用户量只有约7亿户。可以看出,智能手机市场的潜力不可估量。

(二)Android 与GPS 简介 1.Android 是一种基于Linux 的自由及开放源代码的操作系统,主要使用于移动设 备,如智能手机和平板计算机,由Google 公 司和开放手机联盟领导及开发。 2011年第一季度,Android 在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,Android 占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。 Android 的系统架构和其操作系统一 样,采用了分层的架构。从架构图看, Android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运 行库层和Linux 内核层。 Android 系统所具有的特点有:开放性、丰富的硬件、方便开发。 2.GPS 是英文Global Positioning System (全球定位系统) 的简称。GPS 起始于1958年美国军方的一个项目, 1964年投入使用。GPS 定位的基本原理是根据高速运动的卫星瞬间位置作为已知的起算数据,采用空间距离后方交会的方法,确定待测点的位置。GPS 由空间部分、地面控制系统、用户设备部分三部分组成。作为先进的测量手段和新的生产力,GPS 已经融入了国民经济建设、国防建设和社会发展的各个应用领域。GPS 技术与我们的日常生活日益相关。

Android实验报告

Android实验报告 专业:计算机科学与技术 班级: 学号: 姓名:武易 2016年11月28日 实验一Activity 生命周期 一、实验目的 Android 生命周期是从程序启动到程序终止的过程。通过本次实验深入理解Android 系统管理生命周期的必要性,并以Activity 为例说明Android 系统是如何管理程序组件的生命周期。 二、实验设备 1、硬件设备系统类型:Win7 版本32 位,处理器: Intel(R)Core(TM)i3-2350M CPU @2.30GHz 2.30GHz 安装内存 (RAM):8.00GB 2、软件设备Win7 操作系统、Eclipse、JDK、Android SDK、ADT 三、实验内容 1、实验要求 观察Activity的生命周期。 2、详细设计 public class MainActivity extends ActionBarActivity {

private static String TAG="LIFECYCLE"; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); Log.i(TAG,"(1) onCreate()"); button.setOnClickListener(new View.OnClickListener(){ public void onClick(View view){ finish(); } }); } @Override public void onStart(){ super.onStart(); Log.i(TAG,"(2) onStart()"); } @Override public void onRestoreInstanceState(Bundle savedInstanceState){ super.onRestoreInstanceState(savedInstanceState); Log.i(TAG,"(3) onRestoreInstanceState()"); } @Override

Android 应用程序的生命周期

Android 应用程序的生命周期 Android 是一构建在Linux 之上的开源移动开发平台,在Android 中,多数情况下每个程序都是在各自独立的Linux 进程中运行的。当一个程序或其某些部分被请求时,它的进程就“出生”了;当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个进程就“死亡”了。可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制。这和我们编写桌面应用程序时的思维有一些不同,一个桌面应用程序的进程也是在其他进程或用户请求时被创建,但是往往是在程序自身收到关闭请求后执行一个特定的动作(比如从main 函数中return)而导致进程结束的。要想做好某种类型的程序或者某种平台下的程序的开发,最关键的就是要弄清楚这种类型的程序或整个平台下的程序的一般工作模式并熟记在心。在Android中,程序的生命周期控制就是属于这个范畴——我的个人理解:) 在Android 系统中,当某个activity(应用程序的一个“帧”)调用startActivity(myIntent) 时,系统会在所有已经安装的程序中寻找其intent filter和myIntent 最匹配的一个activity,启动这个进程,并把这个intent通知给这个activity。这就是一个程序的“生”。比如我们在Home application 中选择“Web browser”,系统会根据这个intent 找到并启动Web browser 程序,显示Web browser 的一个activity 供我们浏览网页(这个启动过程有点类似我们在在个人电脑上双击桌面上的一个图标启动某个应用程序)。在Android 中,所有的应用程序“生来就是平等的”,所以不光Android 的核心程序甚至第三方程序也可以发出一个intent 来启动另外一个程序中的一个activity。Android 的这种设计非常有利于“程序部件”的重用。 一个Android 程序的进程是何时被系统结束的呢?通俗地说,一个即将被系统关闭的程序是系统在内存不足(low memory)时,根据“重要性层次”选出来的“牺牲品”。一个进程的重要性是根据其中运行的部件和部件的状态决定的。各种进程按照重要性从高到低排列如下: 1. 前台进程。这样的进程拥有一个在屏幕上显示并和用户交互的activity 或者它的一个IntentReciver 正在运行。这样的程序重要性最高,只有在系统内存非常低,万不得已时才会被结束。 2. 可见进程。在屏幕上显示,但是不在前台的程序。比如一个前台进程以对话框的形式显示在该进程前面。这样的进程也很重要,它们只有在系统没有足够内存运行所有前台进程时,才会被结束。 3. 服务进程。这样的进程在后台持续运行,比如后台音乐播放、后台数据上传下载等。这样的进程对用户来说一般很有用,所以只有当系统没有足够内存来维持所有的前台和可见进程时,才会被结束。 4. 后台进程。这样的程序拥有一个用户不可见的activity。这样的程序在系统内存不足时,按照LRU 的顺序被结束。 5. 空进程。这样的进程不包含任何活动的程序部件。系统可能随时关闭这类进程。 从某种意义上讲,垃圾收集机制把程序员从“内存管理噩梦”中解放出来,而Android 的进程生命周期管理机制把用户从“任务管理噩梦”中解放出来。我见过一些Nokia S60 用户和Windows Mobile 用户要么因为长期不关闭多余的应用程序而导致系统变慢,要么因为不时查看应用程序列表而影响使用体验。Android 使用Java 作为应用程序API,并且结合其独特的生命周期管理机制同时为开发者和使用者提供最大程度的便利。

Android实验八

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称 Android嵌入式软件开发 项目名称 Android 定位服务 班级 学号 姓名 同组人员无 实验日期 2016.10.25

一、实验目的与要求: 【实验目的】 掌握 Android 定位服务方法 【实验要求】 1、练习使用 LocationManager 进行定位服务 【实验原理】 LocationManager, LocationProvider, Location 二、实验内容 1、电脑连接网络; 2、新建 Android 应用程序项目 LocationTest; 3、业务逻辑代码与界面布局文件:activity_main.xml、MainActivity.java; 4、在 AndroidManifest.xml 中声明权限; 5、在模拟器上运行项目,点击下图中红框内的按钮,在弹出的百度地图中输入某个地址,并点击“修改地址”,观察 LocationTest 中显示的经纬度变化。 实验结果截图:

图表 1 地图定位界面 图表 2 获得定位经纬度信息 三、实验分析与小结: Android GPS:需要GPS硬件支持,直接和卫星交互来获取当前经纬度,这

种方式需要手机支持GPS模块(现在大部分的智能机应该都有了)。通过GPS方式准确度是最高的,但是它的缺点也非常明显:1,比较耗电;2,绝大部分用户默认不开启GPS模块;3,从GPS模块启动到获取第一次定位数据,可能需要比较长的时间;4,室内几乎无法使用。这其中,缺点2,3都是比较致命的。需要指出的是,GPS走的是卫星通信的通道,在没有网络连接的情况下也能用。 【思考题】 【1】Android定位的两种方式? GPS、网络 【2】Android定位的3个API Location、LocationProvider、LocationManager 得分(百分制)

实验四Android基本组件交互实验

实验四Android基本组件交互实验 【实验目的】 本实验是Android基本组件实验,主要针对Activity、Service和Receiver实现和使用方法。通过实验使学生掌握Activity的跳转、Service的启动停止以及Receiver的接受等。【实验要求】 ◆使得学生熟悉Activity、Service和BroadCast基本使用; ◆使得学生掌握短信接收实现和使用; ◆使得学生掌握界面跳转基本原理和使用方法; ◆使得学生掌握服务和广播的基本机制。 【实验原理】 1.Activity跳转 startActivity——跳转到目标页面,参数为Intent; startActivityForResult ——跳转到下一个Activity,而当这个Activity被关闭以后,自动跳转前一个Activity,并调用onActivityResult( )方法,参数为Intent和 requestcode 2.Intent Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent 提供了一种通用的消息系统,将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成Android各个组件之间的通讯。 Intent属性: ?Action ,对执行动作的描述,在Intent类中定义了一些字符串常量作为标准动 作; ?data ,是对执行动作所要操作的数据的描述,Android中采用URI来表示数据; ?例:VIEW_ACTION 类别,是被执行动作的附加信息; ?extra 附加信息,除了data之外,还可以通过extra附加信息,extra属性使用 Bundle类型进行数据传递; ?component 组件,显式指定Intent的目标组件的名称; ?type 数据类型,显式指定Intent的数据类型; 3.Service组件 Service一般由一个Activity或其他Context对象来启动,当启动Service之后,该Service将会在后台运行,及时启动这个Service的Activity或其他组件的生命周期已经结束,Service仍然会继续运行,直到自己的生命周期结束为止。每个Service都应该在中进行声明。Service的启动方式有两种,对应的生命周期也各不相同。 通过startService方法启动。当系统调用startService方法,如果该Service还未启动,则依法调用其onCreate方法和onStart方法来启动。当其他Context对象调用stopService方法、Service调用自身的stopSelf或stopService方法时才会停止Service 的执行。

android中手机切屏是activity生命周期的变化

android点滴(12) -- 1. Android横竖屏切换时,Activity的生命周期的变化 (面试题) 2011/10/15 10:49:48 | 阅读40次 1.Android横竖屏切换时,Activity的生命周期的变化。 Activity的生命周期 /Files/cod y1988/ActivityLifeCycle.rar 完整生命周期(the entire lifetime) onCreate , onDestroy 在创建和销毁的时候调用。在onCreate中初始化全局资源,在onDestroy中销毁资源。

可见生命周期(the visible lifetime) onStart , onStop 这是Activity可见,但是未必可交互即未必在最前面。维护着用户可见的资源。 前景周期(the for eground lifetime) onResume , onPause 此时Activity在最前面,可与用户交互。一个Activity 可在Resume与Pause之间频繁的切换例如设备休眠。因此这两个方法中只有相当轻量级的调用。 横竖屏切换时Activity的生命周期的变化与activity的configChanges的配置有关。 1.configChanges不配置 运行: 初始时TextView显示的内容为“Hello World, LifeCycle!”,点击Button

竖屏切换为横屏: 此时TextView的内容重新变为“Hello World, LifeCycle!” 横屏切换为竖屏:

2.配置configChanges …… 运行,点击Button 竖屏切换为横屏: 没有发生变化 横屏切换为竖屏: 没有发生变化 结论:横竖屏切换时Activity的生命周期与configChanges的配置相关。1.如果不配置,则要先销毁Activity再创建,销毁的过程中会调用onSaveInstanceState, 2.如果配置configChanges为Orientation则不销毁

相关主题
文本预览
相关文档 最新文档