2023年移动应用开发实验报告

上传人:豆*** 文档编号:167043987 上传时间:2022-11-02 格式:DOC 页数:58 大小:5.13MB
收藏 版权申诉 举报 下载
2023年移动应用开发实验报告_第1页
第1页 / 共58页
2023年移动应用开发实验报告_第2页
第2页 / 共58页
2023年移动应用开发实验报告_第3页
第3页 / 共58页
资源描述:

《2023年移动应用开发实验报告》由会员分享,可在线阅读,更多相关《2023年移动应用开发实验报告(58页珍藏版)》请在装配图网上搜索。

1、中南大学移动应用开发实验报告 目 录内容简介3上机实验规定及规范 4实验一511实验二1220实验三2142实验四4352内容 简 介 移动应用开发是计算机专业学生的一门专业课程,着重讲述移动应用编程的技术方法。对于学生从事移动应用系统的研发、使用和维护有重要意义。本课程概念多、内容涉及面广、系统性强。通过本课程的学习,学生应能从软件、硬件功能分派的角度去了解、分析和研究移动应用系统,建立起对移动应用系统的全面结识,树立全面地、发展地看问题的观点,从而加深对各种类型移动应用系统的了解。本课程的学习应注重理论与实践相结合,因此实验教学是教学环节中必不可少的重要内容。通过实验教学的学习,使学生纯熟

2、掌握有关移动应用编程的基本概念、基本原理和基本思想,掌握对移动应用系统进行设计、分析和计算的方法。实验部分涉及四个实验,涉及实验目的、实验内容和实验所需环境等,介绍了每个实验所需的一些基础知识和技巧。在实验中给出的实验题,跟课堂教学的内容都有密切的关系,所以需要将课堂上讲授的例子程序融会贯通,掌握实验所需的一些基本方法和工具,并在吃透例子程序的基础上,积极独立思考设计和编写满足实验规定的程序。中南大学信息科学与工程学院 鲁鸣鸣制定上机实验规定及规范 移动应用开发课程具有比较强的实践性。上机实验是一个重要的教学环节。一般情况下学生可以重视实验环节,对于编写程序上机练习具有一定的积极性。但是容易忽

3、略实验的总结,忽略实验报告的撰写。对于一名大学生必须严格训练分析总结能力、书面表达能力。需要逐步培养书写科学实验报告以及科技论文的能力。拿到一个题目,一般不要急于编程。对的的方法是:一方面理解问题,明确给定的条件和规定解决的问题,然后按照自顶向下,逐步求精,分而治之的策略,按照面向对象的程序设计思绪,逐个地解决子问题。 一、实验报告的基本规定: 一般性、较小规模的上机实验题,必须遵循下列规定。养成良好的习惯。 姓名 班级 学号 日期 题目 i. 问题描述 ii. 设计简要描述 iii. 程序清单(带有必要的注释) iv. 结果分析(原始图示,测试数据与运营记录,分析对的性;) v. 调试报告:

4、 实验者必须重视最后这两个环节,否则等同于没有完毕实验任务。这里可以体现个人特色、或发明性思维。具体内容涉及:测试数据与运营记录;调试中碰到的重要问题,自己是如何解决的;经验和体会等。 二、实验报告的提高规定: 阶段性、较大规模的上机实验题,应当遵循下列规定。养成科学的习惯。 (1)问题描述 (2)需求和规格说明 (3)描述问题,简述题目要解决的问题是什么。规定软件做什么。原题条件局限性时补全。 (4)概要设计:功能模块的划分(5)具体设计:每部分模块的设计,含数据结构的设计,算法的描述(流程图或PDL) a.设计思想:重要算法基本思想。 b.设计表达:每个函数的头和规格说明;列出每个函数所调

5、用和被调用的函数,也可以通过调用关系图表达。 (6)实现注释:各项功能的实现限度、在完毕基本规定的基础上尚有什么功能。 (7)用户手册:即使用说明书。 (8)调试报告:调试过程中碰到的重要问题是如何解决的;设计的回顾、讨论和分析;时间复杂度、空间复杂度分析;改善设想;经验和体会等。 实验一 GeoQuiz应用实现一、实验目的 1 掌握activity和布局文献的基本概念2. 掌握编写简朴Android应用的流程3.掌握响应用户交互操作的基本方法二、实验开发环境和工具可以在Linux或者Windows操作系统上搭建开发环境,所使用的开发工具涉及ADT bundle或Android Studio,

6、使用Java语言,工具包使用JDK1.7或1.8。三、实验内容 1、参照参考书Android编程权威指南: the big nerd ranch guide第一章给出的Android应用GeoQuiz,能测试用户的地理知识。用户通过单击True或False按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案对的与否。如下图所示:The Pacific Ocean is larger than the Atlantic Ocean.一、 问题描述这是一个简易的地理知识问答app。本次实验是一个初步设计,重要内容有:一方面设计出一个界面(相称于android入门),这个界面涉及一个TextView

7、用来展示题目,以及两个按钮,一个代表true,另一个代表false,当点击这两个按钮中的一个时主界面上要给出答题是否对的。另一方面,还要实现答完题后题目自动跳转。二、设计简要描述按照Android MVC的思想进一步理解MVC概念MVC即Model-View-Controller。M:逻辑模型,V:视图模型,C:控制器。MVC模式下,系统框架的类库被划分为3种:模型(Model)、视图(View)、控制器(Controller)。模型对象负责建立数据结构和相应的行为操作解决。视图对象负责在屏幕上渲染出相应的图形信息展示给用户看。控制器对象负责截获用户的按键和屏幕触摸等事件,协调Model对象和

8、View对象。用户与视图交互,视图接受并反馈用户的动作;视图把用户的请求传给相应的控制器,由控制器决定调用哪个模型,然后由模型调用相应的业务逻辑对用户请求进行加工解决,假如需要返回数据,模型会把相应的数据返回给控制器,由控制器调用相应的视图,最终由视图格式化和渲染返回的数据,对于返回的数据完全可以增长用户体验效果展现给用户。一个模型可以有多个视图,一个视图可以有多个控制器,一个控制器也可以有多个模型。(1) 、模型(Model)Model是一个应用系统的核心部分,代表了该系统实际要实现的所有功能解决。比如:在视频播放器中,模型代表一个视频数据库及播放视频的程序函数代码;在拍照应用中,模型代表一

9、个照片数据库,及看图片时的程序函数代码。在一个电话应用中,Model代表一个电话号码簿,以及拨打电话和发送短信的程序函数代码。Model在values目录下通过xml文献格式生成,也可以通过硬编码的方式直接Java代码生成。View和Model是通过桥梁Adapter来连接起来。(2) 、视图(View)View是软件应用传送给用户的一个反馈结果。它代表软件应用中的图形展示、声音播放、触觉反馈等职责。视图的根节点是应用程序的自身窗口。比如,视频播放器中也许包含当前播放的画面,这个画面就是一个视图。另一个视图组件也许是该视频的文字标题。再一个就是一些播放按键,比如:Stop、Start、Paus

10、e等按钮。View在layout目录下通过xml文献格式生成,用findViewById()获取;也可以通过硬编码的方式直接Java代码生成。(3) 、控制器(Controller)Controller在软件应用负责对外部事件的响应,涉及:键盘敲击、屏幕触摸、电话呼入等。Controller实现了一个事件队列,每一个外部事件均在事件队列中被唯一标记。框架依次将事件从队列中移出并派发出去。根据以上分析,在该项目中一方面在视图层也就是xml文献中设计如下: 一方面实现一个简朴的界面,重要用到的是线性布局(LinearLayout),只要设立几个属性就可以,以下两行分别是设立为居中、垂直。(注意gr

11、avity与layout_gravity的区别,gravity指的是该view里面的内容与该view的相对关系,而layout_view指的是该view与父view的相对位置关系)android:gravity=centerandroid:orientation=horizontal添加一个TextView,两个Button,一方面都要设定他们的大小,如下(wrap_content 指自适应大小,根据内容来自动调整大小)android:layout_width=wrap_content android:layout_height=wrap_content然后就是他们的显示的内容,当然TextV

12、iew也要显示内容即题目,但是,我们考虑到后面要自动的改变题目的内容,因此暂时不设立内容,先让其空着。而true和false两个按钮则要先设立其text。我们为了提高代码的复用,减少硬编码,我们将使用字符串的引用来设立两个按钮的text。一方面要在strings.xml文献中(res-values-strings.xml)添加两个字符串。truefalse然后在activity_main.xml文献中设立两个按钮的textandroid:text=string/true_button控制层设计如下:package com.example.testcase;import android.app.

13、Activity;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListenerprivate Button but

14、1,but2,but;private TextView tv;private int id;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Overridepublic boolean onCreateOptionsMenu(Menu menu) / Inflate the menu; this adds items to the action bar if it is pres

15、ent.getMenuInflater().inflate(R.menu.main, menu);but1 = (Button) this.findViewById(R.id.bu1);but2 = (Button) this.findViewById(R.id.bu2);tv = (TextView) this.findViewById(R.id.tv1);but1.setOnClickListener(this);but2.setOnClickListener(this);return true;Overridepublic void onClick(View v) id = v.getI

16、d();if(id = but1.getId()Toast.makeText(this, 恭喜你,答对了!, 0).show();elseToast.makeText(this, Sorry,答错了!, 0).show();package com.example.testcase;public class TrueFalse private int mQestion;/保存地理知识字符串的idprivate boolean mTrueQuestion;public TrueFalse(int mQestion, boolean mTrueQuestion) super();this.mQest

17、ion = mQestion;this.mTrueQuestion = mTrueQuestion;public int getmQestion() return mQestion;public void setmQestion(int mQestion) this.mQestion = mQestion;public boolean ismTrueQuestion() return mTrueQuestion;public void setmTrueQuestion(boolean mTrueQuestion) this.mTrueQuestion = mTrueQuestion;三、调试结

18、果实验二 GeoQuiz应用实现进阶一、实验目的 1 掌握Android中的MVC设计模式2. 掌握Activity生命周期基本概念3. 掌握Android应用的调试3.掌握Android应用中多个组件切换的基本方式二、实验开发环境和工具可以在Linux或者Windows操作系统上搭建开发环境,所使用的开发工具涉及ADT bundle或Android Studio,使用Java语言,工具包使用JDK1.7或1.8。三、实验内容 1、参照参考书Android编程权威指南: the big nerd ranch guide第2、3、4、5章给出的Android应用GeoQuiz进阶的具体代码和讲解

19、,完善GeoQuiz应用,使得1) GeoQuiz能从多个应用之间切换,如下图所示:2) 创建GeoQuiz应用横向布局,如下图所示,并实现跨周期的数据保存(手机旋转后,应用当前问题的状态仍能保持)3) 为GeoQuiz应用增长第二个用户界面(以及相应activity),新增activity用来给用户提供查看当前问题答案,如下图所示:一、问题描述在本次实验中重要实现以下几个功能:使用数组实现问题类的控制,容易的做到题目的跳转翻转手机屏幕后任然能保持在同一个问题中实现前翻后翻的功能实现作弊功能一方面,在将题目抽象为一个类的时候,一方面要分析这个类的属性。在TrueFalse类中,重要有一个整型变

20、量mQestion用于地理知识字符的id,一个布尔型的变量mTrueQuestion用于显示该问题是否对的。TrueFalse类具体实现如下package com.example.testcase;public class TrueFalse private int mQestion;/保存地理知识字符串的idprivate boolean mTrueQuestion;public TrueFalse(int mQestion, boolean mTrueQuestion) super();this.mQestion = mQestion;this.mTrueQuestion = mTrueQ

21、uestion;public int getmQestion() return mQestion;public void setmQestion(int mQestion) this.mQestion = mQestion;public boolean ismTrueQuestion() return mTrueQuestion;public void setmTrueQuestion(boolean mTrueQuestion) this.mTrueQuestion = mTrueQuestion;在activity类中,mQuestionBank数组中存放了题目,在TextView设立文本

22、内容时,只要根据TrueFalse对象的mQuestion即问题的id来设立即可MainActivity类的具体实现如下:package com.example.geopoe;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import an

23、droid.widget.ImageButton;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity private TextView mQuestionText;private Button mTrueButton, mFalseButton, mCheatButton;/private ImageButton mPrevImageButton, mNextImageButton;private int mCurrentIndex;/ 用于记

24、录当前文本的idprivate boolean mCheat;/ 表达是否作弊private static final String KEY_INDEX = index;public static final String SHOW_ANSWER = answer;/ mQuestionBank数组中存放了题目,在TextView设立文本内容时,只要根据/ TrueFalse对象的mQuestion即问题的id来设立即可private TrueFalse mQuestionBank = new TrueFalse new TrueFalse(R.string.question_an, fals

25、e),new TrueFalse(R.string.question_chi, false),new TrueFalse(R.string.question_su, false),new TrueFalse(R.string.question_tai, true),new TrueFalse(R.string.question_zhu, true),new TrueFalse(R.string.quetion_ya, true), ;Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent d

26、ata) if (data = null) / 说明没有作弊return; else / 表白有从其他Activity传过来的intent,要获取是否作弊mCheat = data.getBooleanExtra(CheatActivity.ANSWER_SHOWN, false);/ 更新问题public void updateQuestion() mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;mCheat = false;mQuestionText.setText(mQuestionBankmCurrentIndex.

27、getmQuestion();/ 判断是否答对问题public void checkAnswer(boolean b) boolean answer = mQuestionBankmCurrentIndex.isAnswer();if (mCheat) if (answer = b) Toast.makeText(MainActivity.this, 通过作弊您答对了!,Toast.LENGTH_SHORT).show(); else Toast.makeText(MainActivity.this, Sorry,通过作弊您还是答错了!,Toast.LENGTH_SHORT).show();

28、else if (answer = b) Toast.makeText(MainActivity.this, 恭喜你答对了!, Toast.LENGTH_SHORT).show(); else Toast.makeText(MainActivity.this, Sorry,你答错了!, Toast.LENGTH_SHORT).show();Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_ma

29、in);if (savedInstanceState != null)mCurrentIndex = savedInstanceState.getInt(KEY_INDEX);/ 先获取文本框mQuestionText = (TextView) findViewById(R.id.question_text_id);mQuestionText.setText(mQuestionBankmCurrentIndex.getmQuestion();/ 获取True及False按钮并为其设立监听器mTrueButton = (Button) findViewById(R.id.true_button_

30、id);mTrueButton.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) checkAnswer(true););mFalseButton = (Button) findViewById(R.id.false_button_id);mFalseButton.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) checkAnswer(false););/ 获取作弊按钮mCheatBut

31、ton = (Button) findViewById(R.id.cheat_button_id);mCheatButton.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) Intent i = new Intent(MainActivity.this, CheatActivity.class);boolean isTrue = mQuestionBankmCurrentIndex.isAnswer();i.putExtra(SHOW_ANSWER, isTrue);startActivi

32、tyForResult(i, 0);/ 启动带有回音的Activity);/ 获取向前向后的两个图标并为其添加监听器mPrevImageButton = (ImageButton) findViewById(R.id.prev_imageButton_id);mPrevImageButton.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) if (mCurrentIndex = 0) mCurrentIndex = mQuestionBank.length;mCurrentIndex-;m

33、QuestionText.setText(mQuestionBankmCurrentIndex.getmQuestion(););mNextImageButton = (ImageButton) findViewById(R.id.next_imageButton_id);mNextImageButton.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) updateQuestion(););Overridepublic boolean onCreateOptionsMenu(Menu me

34、nu) / Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;Overridepublic void onSaveInstanceState(Bundle saveInstanceState) super.onSaveInstanceState(saveInstanceState);saveInstanceState.putInt(KEY_INDEX, mCurrentIndex);CheatA

35、ctivity类的具体实现如下:package com.example.geopoe;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;/* * 查看答案界面 * author Sam * */public class CheatA

36、ctivity extends Activityprivate Button mShow_answer_button;private TextView mShow_answer_text;private boolean mAnswerIsTrue;/表达当前问题的答案是否对的public static final String ANSWER_SHOWN = answer_shown;private void setAnswerShownResult(boolean isAnswerShown)Intent data = new Intent();data.putExtra(ANSWER_SHO

37、WN, isAnswerShown);setResult(RESULT_OK, data);Overrideprotected void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_cheat);mShow_answer_text = (TextView)findViewById(R.id.show_answer_id);mAnswerIsTrue = getIntent().getBooleanExtra(MainActivity.

38、SHOW_ANSWER,false);mShow_answer_button = (Button)findViewById(R.id.show_answer_button_id);setAnswerShownResult(false);/开始时还没有查看答案,只有点击按钮后才会真正查看答案mShow_answer_button.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) if(mAnswerIsTrue)mShow_answer_text.setText(R.string.trueBu

39、tton);elsemShow_answer_text.setText(R.string.falseButton);setAnswerShownResult(true););二、 调试结果实验三 Activity的生命周期及Intent一、实验目的 1 掌握activity组件生命周期函数的用法2. 掌握使用intent实现activity之间的跳转3.掌握在manifest文中定义多个activity,并指定Launcher Activity二、实验开发环境和工具可以在Linux或者Windows操作系统上搭建开发环境,所使用的开发工具涉及ADT bundle或Android Studio,

40、使用Java语言,工具包使用JDK1.7或1.8。三、实验内容 1、设计如下界面,涉及四个按钮,两个文本框。单击相应按钮可以启动相应activity。假定Activity A为启动Activity。具体如图1.1、1.2、1.3、1.4所示:图1.1 初始界面(Activity A is started)图1.2 单击Dialog按钮(Activity A is paused)图1.3 单击“Start B”(Activity A is stopped and Activity B is started)图1.4 单击“Start C”(Activity A is stopped and一、

41、Android之 Activity生命周期简析Activity作为四大组件之一,出现的频率相称高,基本上我们在Android的各个地方都能看见它的踪影,因此进一步了解Activity,对于开发高质量应用程序是很有帮助的。(1) 、初识Activity在平常应用中Activity是与用户交互的接口,它提供了一个用户完毕相关操作的窗口。当我们在开发中创建Activity后,通过调用setContentView(View)方法来给该Activity指定一个布局界面,而这个界面就是提供应用户交互的接口。android系统中是通过Activity栈的方式来管理Activity的,而Activity自身则

42、是通过生命周期的方法来管理的自己的创建与销毁,既然如此,现在我们就来看看Activity生命周期是如何运作的。(2) Activity的形态Active/Running: Activity处在活动状态,此时Activity处在栈顶,是可见状态,可与用户进行交互。 Paused: 当Activity失去焦点时,或被一个新的非全屏的Activity,或被一个透明的Activity放置在栈顶时,Activity就转化为Paused状态。但我们需要明白,此时Activity只是失去了与用户交互的能力,其所有的状态信息及其成员变量都还存在,只有在系统内存紧张的情况下,才有也许被系统回收掉。 Stoppe

43、d: 当一个Activity被另一个Activity完全覆盖时,被覆盖的Activity就会进入Stopped状态,此时它不再可见,但是跟Paused状态同样保持着其所有状态信息及其成员变量。 Killed: 当Activity被系统回收掉时,Activity就处在Killed状态。 Activity会在以上四种形态中互相切换,至于如何切换,这因用户的操作不同而异。了解了Activity的4种形态后,我们就来聊聊Activity的生命周期。(3) 、Activity生命周期Android中activity的生命周期经典流程图如下:(4) 、各生命周期简析Activity经历从创建,运营,停止,

44、销毁等正常的生命周期过程。我们这里先来介绍一下几个重要方法的调用时机,然后再通过代码层面来验证其调用流程。 onCreate : 该方法是在Activity被创建时回调,它是生命周期第一个调用的方法,我们在创建Activity时一般都需要重写该方法,然后在该方法中做一些初始化的操作,如通过setContentView设立界面布局的资源,初始化所需要的组件信息等。 onStart : 此方法被回调时表达Activity正在启动,此时Activity已处在可见状态,只是还没有在前台显示,因此无法与用户进行交互。可以简朴理解为Activity已显示而我们无法看见摆了。 onResume : 当此方法

45、回调时,则说明Activity已在前台可见,可与用户交互了(处在前面所说的Active/Running形态),onResume方法与onStart的相同点是两者都表达Activity可见,只但是onStart回调时Activity还是后台无法与用户交互,而onResume则已显示在前台,可与用户交互。当然从流程图,我们也可以看出当Activity停止后(onPause方法和onStop方法被调用),重新回到前台时也会调用onResume方法,因此我们也可以在onResume方法中初始化一些资源,比如重新初始化在onPause或者onStop方法中释放的资源。 onPause : 此方法被回调时

46、则表达Activity正在停止(Paused形态),一般情况下onStop方法会紧接着被回调。但通过流程图我们还可以看到一种情况是onPause方法执行后直接执行了onResume方法,这属于比较极端的现象了,这也许是用户操作使当前Activity退居后台后又迅速地再回到到当前的Activity,此时onResume方法就会被回调。当然,在onPause方法中我们可以做一些数据存储或者动画停止或者资源回收的操作,但是不能太耗时,由于这也许会影响到新的Activity的显示onPause方法执行完毕后,新Activity的onResume方法才会被执行。 onStop : 一般在onPause方

47、法执行完毕直接执行,表达Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运营。同样地,在onStop方法可以做一些资源释放的操作(不能太耗时)。 onRestart :表达Activity正在重新启动,当Activity由不可见变为可见状态时,该方法被回调。这种情况一般是用户打开了一个新的Activity时,当前的Activity就会被暂停(onPause和onStop被执行了),接着又回到当前Activity页面时,onRestart方法就会被回调。 onDestroy :此时Activity正在被销毁,也是生命周期最后一个执行的方法,一般我

48、们可以在此方法中做一些回收工作和最终的资源释放。二、 Android之intentIntent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责相应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到相应的组件,将 Intent传递给调用的组件,并完毕组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。Intent可以启动一个Activi

49、ty,也可以启动一个Service,还可以发起一个广播Broadcasts。具体方法如下:组件名称方法名称ActivitystartActvity( )startActivity( )ServicestartService( )bindService( )BroadcastssendBroadcasts( )sendOrderedBroadcasts( )sendStickyBroadcasts( )Intent有以下几个属性:动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。其中最常用的是Action属性和Da

50、ta属性。三、 实验分析本次实验要实现四个不同的界面,分别相应四个Activity类以及四个xml文献。四个activity类实现如下:package com.example.testthree;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.text.method.ScrollingMovementMethod;import android.view.Menu;import android.view.View;import android.vie

51、w.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity private static String ACREAT=Activity A.onCreate()n;private static String ASTART=Activity A.onStart()()n;private static String APAUSE=Activity A.onPause()n;private static Str

52、ing ARESUME=Activity A.onResume()n;private static String ASTOP=Activity A.onStop()n;private static String ADESTROY=Activity A.onDestroy()n;private TextView lifecycle_text, status_text;private Button dialog, startB, startC, finishA;public static final String FINAL_STATUS = finally;Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) if (data != null) String otherStatus

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!