移动应用开发实验报告

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

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

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对象和View对象

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

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

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

11、yout_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然后就是他们的显示的内容,当然TextView也要显示内容

12、即题目,但是,我们考虑到后面要自动的改变题目的内容,因此暂时不设置内容,先让其空着。而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.Activity;i

13、mport 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 but1,but2,but

14、;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 present.getMen

15、uInflater().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.getId();if(id

16、= 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.mQestion = mQes

17、tion;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;三、调试结果实验二 GeoQu

18、iz应用实现进阶一、实验目的 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进阶的详细代码和讲解,完善GeoQuiz

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

20、理知识字符的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 = mTrueQuestion;publ

21、ic 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设置文本内容时,只要根据True

22、False对象的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 android.widget

23、.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;/ 用于记录当前文本的idpriv

24、ate 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, false),new TrueF

25、alse(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 data) if (dat

26、a = 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.getmQuestion

27、();/ 判断是否答对问题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(); else if (ans

28、wer = 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_main);if (save

29、dInstanceState != 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_id);mTrueBut

30、ton.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););/ 获取作弊按钮mCheatButton = (Butto

31、n) 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);startActivityForResult(

32、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-;mQuestionText

33、.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 menu) / Inflat

34、e 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);CheatActivity类的具体实

35、现如下: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 CheatActivity exte

36、nds 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_SHOWN, isAnswer

37、Shown);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.SHOW_ANSWER,

38、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.trueButton);elsemS

39、how_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,使用Java语言,工具包

40、使用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一、 Android之 Act

41、ivity生命周期简析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只是失去了与用户交互的能力,其所有的状态信息及其成员变量都还存在,只有在系统内存紧张的情况下,才有可能被系统回收掉。 Stopped: 当一个Activit

43、y被另一个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 : 当此方法回调时,则说明Activi

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

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

47、ctivity即将停止或者完全被覆盖(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可以启动一个Activity,也可以启动一个Ser

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

50、次实验要实现四个不同的界面,分别对应四个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.view.View.OnClic

51、kListener;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 String ARESUME=A

52、ctivity 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 = data.getEx

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