Android 退出activity 的方式总结

时间:2019-05-12 11:59:20下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Android 退出activity 的方式总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Android 退出activity 的方式总结》。

第一篇:Android 退出activity 的方式总结

Android 退出activity 的方式总结(2012-09-02 22:24:20)在android中使用:[activityname].this.finish();只是退出了activity的堆栈中,要真正的退出程序在手机cpu中的运行,当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用:

一 使用killProcess()函数,首先获取当前进程的id,然后杀死该进程: android.os.Process.killProcess(android.os.Process.myPid());

通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空

二 在activity的生命周期函数中添加如下的函数,强制关闭与该包有关联的一切执行:

ActivityManager am =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

am.restartPackage(“packagename”);

还需要在AndroidManifest.xml文件中加入如下的权限:

此做法:只能杀死别人,不能杀死自己

三、终止当前正在运行的Java虚拟机,导致程序终止 System.exit(0);不会把自己的应用程序杀死

企业中做法:

创建类app 继承Application

AndroidMainfest-->name-->app //声明该类为整个应用程序全局的实例

创建整个应用程序全局的实例

App.class: ArrayList activities;

其他的Activity中: public void onCreate(Bundle savedInstanceState){ App app =(App)getApplication();//获取应用程序全局的实例引用

app.activities.add(this);//把当前Activity放入集合中 }

public void onDestory(){ App app =(App)getApplication();//获取应用程序全局的实例引用

app.activities.remove(this);//把当前Activity从集合中移除 }

安全退出:

在菜单退出按钮的事件中定义如下代码: App app =(App)getApplication();List activities = app.activities;for(Activity act:activities){ act.finish();//显式结束

第二篇:Android之activity总结

Android之Activity总结

一、什么是Activity

Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道

二、Activity生命周期(生命周期方法)

由图可知,这些方法调用的顺序:

1.Activity正常启动:onCreate-> onStart-> onResume;

2.Activity被杀掉:onPause-> onStop-> onDestroy,此为一个完整的生命周期。3.中断处理:onPause-> onStop,恢复时onRestart-> onStart-> onResume;

4.如果当前Activity是半透明状态或者对话框状态:那么中断就是onPause ,恢复的时候onResume。

那么对于”Other app need memory”,就是我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证一些功能(比如电话),所以资源不足的时候也就有可能被kill掉。

方法在系统中的作用及我们应该做什么:

onCreate(创建):在这里创建界面,做一些数据的初始化工作;

onStart(可视状态): 到这一步变成“用户可见不可交互”的状态;

onResume(可交互状态):变成和用户可交互的,(在Activity栈系统通过栈的方式管理这些Activity,即当前Activity在栈的最上端,运行完弹出栈,则回到上一个Activity);

onPause(暂停状态):到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降

低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。

OnStop(停止状态):变得不可见,被下一个activity覆盖了。

onDestroy(杀死):这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉。

onPause,onstop,onDestroy,三种状态下 activity都有可能被系统杀掉。

Activity栈:Activity以栈的形式进行管理,后进先出的原则

三、Activity之间的通信

在 Android 中,不同的 Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在 Activity 之间传递消息。

Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。

Intent是一种运行时绑定(runtime binding)机制

Intent负责对操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

在应用中,我们可以以两种形式来使用Intent:

直接Intent(应用程序内部):指定了component(组建)属性的Intent。通过指定具体的组件类,通知应用启动对应的组件。

间接Intent(应用程序之间):没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。

对于直接Intent,Android不需要去做解析,因为目标组件已经很明确。

Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。Intent解析机制主要是通过查找已注册在AndroidManifest.xml(清单)中的所有IntentFilter(意图过滤器)及其中定义的Intent,最终找到匹配的Intent。

横屏时:onConfigurationChanged(配置改变))

横屏以及出现键盘键盘时生命周期部重新开始的方法: KeyboardHidHidden/orientation/screenSize 横屏显示:landscape 竖屏显示:portrait

四大组建:activity:活动、service:服务、content provider:内容提供商、broadcast receiver:广播收音机

Activity的所有面试题

什么是Activity? 请描述一下Activity 生命周期?

两个Activity之间跳转时必然会执行的是哪几个方法?

你后台的Activity被系统 回收怎么办?如果后台的Activity由于某原因被系统回收可了,如何在被系统回收之前保存当前状态?

如何退出Activity?如何安全退出已调用多个Activity的Application? 两个Activity之间怎么传递数据?

第三篇:Android关于Activity管理的一个简单封装

我的Android进阶之旅------>Android关于Activity管理的一个简单封装

2015-07-30 12:10 631人阅读 评论(2)收藏 举报

分类:

Android应用开发(226)

版权声明:本文为【欧阳鹏】原创文章,欢迎转载,转载请注明出处!【http://blog.csdn.net/ouyang_peng】

如何管理当前的运行Activity栈,如何彻底退出程序,本文封装了一个Activity管理类,可以方便随时退出程序。

[java] view plain copy

1.import java.util.Stack;2.3.import android.app.Activity;4.import android.content.Context;5.6.public class ActivityManager {

7.private static Stack activityStack;8.private static ActivityManager instance;9.static {

10.instance = new ActivityManager();11.} 12.13.public static ActivityManager getInstance(){ 14.return instance;15.} 16.17./**

18.* 添加指定Activity到堆栈

19.*/

20.public void addActivity(Activity activity){ 21.if(activityStack==null){

22.activityStack=new Stack();23.}

24.activityStack.add(activity);25.} 26./**

27.* 获取当前Activity

28.*/

29.public Activity currentActivity(){

30.Activity activity=activityStack.lastElement();31.return activity;32.} 33./**

34.* 结束当前Activity

35.*/

36.public void finishActivity(){

37.Activity activity=activityStack.lastElement();38.finishActivity(activity);39.} 40./**

41.* 结束指定的Activity

42.*/

43.public void finishActivity(Activity activity){ 44.if(activity!=null){

45.activityStack.remove(activity);46.activity.finish();47.activity=null;48.} 49.} 50./**

51.* 结束指定Class的Activity

52.*/

53.public void finishActivity(Class cls){ 54.for(Activity activity : activityStack){ 55.if(activity.getClass().equals(cls)){ 56.finishActivity(activity);57.return;58.} 59.} 60.} 61.62./**

63.* 结束全部的Activity

64.*/

65.public void finishAllActivity(){

66.for(int i = 0, size = activityStack.size();i < size;i++){ 67.if(null!= activityStack.get(i)){ 68.activityStack.get(i).finish();69.} 70.}

71.activityStack.clear();72.} 73./**

74.* 退出应用程序

75.*/

76.public void AppExit(Context context){ 77.try {

78.finishAllActivity();

79.android.app.ActivityManager activityMgr=(android.app.ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);80.activityMgr.restartPackage(context.getPackageName());81.System.exit(0);82.} catch(Exception e){ } 83.} 84.}

======

下面从http://www.xiexiebang.com

17.*
weibo : @桥下一粒砂

18.*
date : 2012-7-8

19.*

20.*/

21.public class ActivityUtil { 22.23./**

24.*
title : 设置Activity全屏显示

25.*
description :设置Activity全屏显示。

26.* @param activity Activity引用

27.* @param isFull true为全屏,false为非全屏

28.*/

29.public static void setFullScreen(Activity activity,boolean isFull){ 30.Window window = activity.getWindow();

31.WindowManager.LayoutParams params = window.getAttributes();32.if(isFull){

33.params.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;34.window.setAttributes(params);

35.window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

36.} else {

37.params.flags &=(~WindowManager.LayoutParams.FLAG_FULLSCREEN);38.window.setAttributes(params);

39.window.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);40.} 41.} 42.43./**

44.*
title : 隐藏系统标题栏

45.*
description :隐藏Activity的系统默认标题栏

46.* @param activity Activity对象

47.*/

48.public static void hideTitleBar(Activity activity){

49.activity.requestWindowFeature(Window.FEATURE_NO_TITLE);50.} 51.52./**

53.*
title : 设置Activity的显示方向为垂直方向

54.*
description :强制设置Actiity的显示方向为垂直方向。

55.* @param activity Activity对象

56.*/

57.public static void setScreenVertical(Activity activity){

58.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);59.} 60.61./**

62.*
title : 设置Activity的显示方向为横向

63.*
description :强制设置Actiity的显示方向为横向。

64.* @param activity Activity对象

65.*/

66.public static void setScreenHorizontal(Activity activity){

67.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);68.} 69.70./**

71.*
title : 隐藏软件输入法

72.*
description :隐藏软件输入法

73.*
time : 2012-7-12 下午7:20:00

74.* @param activity

75.*/

76.public static void hideSoftInput(Activity activity){

77.activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);78.} 79.80./**

81.*
title : 使UI适配输入法

82.*
description :使UI适配输入法

83.*
time : 2012-7-17 下午10:21:26

84.* @param activity

85.*/

86.public static void adjustSoftInput(Activity activity){ 87.activity.getWindow().setSoftInputMode(88.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);89.} 90.91./** 92.*
title : 跳转到某个Activity。

93.*
description :跳转到某个Activity

94.*
time : 2012-7-8 下午3:20:00

95.* @param activity 本Activity

96.* @param targetActivity 目标Activity的Class

97.*/

98.public static void switchTo(Activity activity,Class targetActivity){

99.switchTo(activity, new Intent(activity,targetActivity));100.} 101.102./**

103.*
title : 根据给定的Intent进行Activity跳转

104.*
description :根据给定的Intent进行Activity跳转

105.*
time : 2012-7-8 下午3:22:23

106.* @param activity Activity对象

107.* @param intent 要传递的Intent对象

108.*/

109.public static void switchTo(Activity activity,Intent intent){ 110.activity.startActivity(intent);111.} 112.113./**

114.*
title : 带参数进行Activity跳转

115.*
description :带参数进行Activity跳转

116.*
time : 2012-7-8 下午3:24:54

117.* @param activity Activity对象

118.* @param targetActivity 目标Activity的Class

119.* @param params 跳转所带的参数

120.*/

121.public static void switchTo(Activity activity,Class targetActivity,Map params){ 122.if(null!= params){

123.Intent intent = new Intent(activity,targetActivity);124.for(Map.Entry entry : params.entrySet()){ 125.setValueToIntent(intent, entry.getKey(), entry.getValue());

126.}

127.switchTo(activity, intent);128.} 129.} 130.131./**

132.*
title : 带参数进行Activity跳转 133.*
description :带参数进行Activity跳转

134.*
time : 2012-7-17 下午10:22:58

135.* @param activity

136.* @param target

137.* @param params

138.*/

139.public static void switchTo(Activity activity,Class target,NameValuePair...params){ 140.if(null!= params){

141.Intent intent = new Intent(activity,target);142.for(NameValuePair param : params){

143.setValueToIntent(intent, param.getName(), param.getValue());

144.}

145.switchTo(activity, intent);146.} 147.} 148.149.150./**

151.*
title : 显示Toast消息。

152.*
description :显示Toast消息,并保证运行在UI线程中

153.*
time : 2012-7-10 下午08:36:02

154.* @param activity

155.* @param message

156.*/

157.public static void toastShow(final Activity activity,final String message){

158.activity.runOnUiThread(new Runnable(){ 159.public void run(){

160.Toast.makeText(activity, message, Toast.LENGTH_SHORT).show();

161.} 162.});163.} 164.165./**

166.*
title : 将值设置到Intent里

167.*
description :将值设置到Intent里

168.*
time : 2012-7-8 下午3:31:17

169.* @param intent Inent对象

170.* @param key Key

171.* @param val Value

172.*/ 173.public static void setValueToIntent(Intent intent, String key, Object val){

174.if(val instanceof Boolean)

175.intent.putExtra(key,(Boolean)val);176.else if(val instanceof Boolean[])

177.intent.putExtra(key,(Boolean[])val);178.else if(val instanceof String)

179.intent.putExtra(key,(String)val);180.else if(val instanceof String[])

181.intent.putExtra(key,(String[])val);182.else if(val instanceof Integer)

183.intent.putExtra(key,(Integer)val);184.else if(val instanceof Integer[])

185.intent.putExtra(key,(Integer[])val);186.else if(val instanceof Long)

187.intent.putExtra(key,(Long)val);188.else if(val instanceof Long[])

189.intent.putExtra(key,(Long[])val);190.else if(val instanceof Double)

191.intent.putExtra(key,(Double)val);192.else if(val instanceof Double[])

193.intent.putExtra(key,(Double[])val);194.else if(val instanceof Float)

195.intent.putExtra(key,(Float)val);196.else if(val instanceof Float[])

197.intent.putExtra(key,(Float[])val);198.} 199.200.}

第四篇:Android之activity总结——转自论坛

Android之activity总结——转自论坛

一、什么是activity Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的activity(使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的activity都要和用户打交道,二、activity生命周期

2011-11-20 20:23:32 上传 下载附件(64.6 KB)由图可知:

在一个Activity正常启动过程中,这些方法调用的顺序是onCreate-> onStart-> onResume;在Activity被kill掉的时候方法顺序是onPause-> onStop-> onDestroy,此为一个完整的Lifecycle。那么对于中断处理(比如电话来了),则是onPause-> onStop,恢复时onStart-> onResume;如果当前应用程序的是一个Theme为Translucent(半透明)或者Dialog 的Activity那么中断就是onPause ,恢复的时候onResume。

那么对于”Other app need memory”,就是我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证一些功能(比如电话),所以资源不足的时候也就有可能被kill掉。方法在系统中的作用及我们应该做什么:

onCreate:在这里创建界面,做一些数据的初始化工作;

onStart: 到这一步变成“用户可见不可交互”的状态;

onResume:变成和用户可交互的,(在Activity栈系统通过栈的方式管理这些Activity,即当前Activity在栈的最上端,运行完弹出栈,则回到上一个Activity);

onPause:到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降

低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。

onStop:变得不可见,被下一个activity覆盖了

onDestroy:这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果你有

一个Progress Dialog在线程中运行,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常。

onPause,onstop,onDestroy,三种状态下 activity都有可能被系统kill 掉。

三、Activity之间的通信

在 Android 中,不同的 Activity 实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在 Activity 之间传递消息。Android 中通过 Intent 对象来表示一条消息,一个 Intent 对象不仅包含有这个消息的目的地,还可以包含消息的内容,这好比一封 Email,其中不仅应该包含收件地址,还可以包含具体的内容。对于一个 Intent 对象,消息“目的地”是必须的,而内容则是可选项。

Intent负责对操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。

在应用中,我们可以以两种形式来使用Intent:

直接Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。

间接Intent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。对于直接Intent,Android不需要去做解析,因为目标组件已经很明确。

Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。

四、Activity 的 Intent Filter

Intent Filter 描述了一个组件愿意接收什么样的 Intent 对象,Android 将其抽象为 android.content.IntentFilter 类。在 Android 的 AndroidManifest.xml 配置文件中可以通过 节点为一个 Activity 指定其 Intent Filter,以便告诉系统该 Activity 可以响应什么类型的 Intent。

当使用 startActivity(intent)来启动另外一个 Activity 时,如果直接指定 intent 对象的 Component 属性,那么 Activity Manager 将试图启动其 Component 属性指定的 Activity。否则 Android 将通过 Intent 的其它属性从安装在系统中的所有 Activity 中查找与之最匹配的一个启动,如果没有找到合适的 Activity,应用程序会得到一个系统抛出的异常。这个匹配的过程如下:

2011-11-20 20:23:59 上传 下载附件(16.72 KB)

五、Activity的栈式管理

Android针对Activity的管理使用的是栈,就是说某一个时刻只有一个Activity处在栈顶,当这个Activity被销毁后,下面的Activity才有可能浮到栈顶,或者有一个新的Activity被创建出来,则旧的Activity就被压栈沉下去了。Activity是Android程序的表现层。程序的每一个显示屏幕就是一个Activity。正在运行的Activity处在栈的最顶端,它是运行状态的。

2011-11-20 20:26:09 上传 下载附件(23.43 KB)

当在程序中调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:它告诉

Activity Manager该Activity实例可以被“回收”。随后 Activity Manager 激活处于栈第二层的 Activity,把原 Activity 压入到栈的第二层,从 Running 状态转到 Paused 状态。

六、Activity的加载模式standard、singleTop、singleTask、singleInstance(其中前两个是一组、后两个是一组),默认为standard standard:就是intent将发送给新的实例,所以每次跳转都会生成新的activity。singleTop:也是发送新的实例,但不同standard的一点是,在请求的Activity正好位于栈顶时(配置成singleTop的Activity),不会构造新的实例singleTask:和后面的singleInstance都只创建一个实例,当intent到来,需要创建设置为singleTask的Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接将intent发送给它。singleInstance:首先说明一下task这个概念,Task可以认为是一个栈,可放入多个Activity。比如启动一个应用,那么Android就创建了一个Task,然后启动这个应用的入口Activity,那在它的界面上调用其他的Activity也只是在这个task里面。那如果在多个task中共享一个Activity的话怎么办呢。举个例来说,如果开启一个导游服务类的应用程序,里面有个Activity是开启GOOGLE地图的,当按下home键退回到主菜单又启动GOOGLE地图的应用时,显示的就是刚才的地图,实际上是同一个Activity,实际上这就引入了singleInstance。singleInstance模式就是将该Activity单独放入一个栈中,这样这个栈中只有这一个Activity,不同应用的intent都由这个Activity接收和展示,这样就做到了共享。当然前提是这些应用都没有被销毁,所以刚才是按下的HOME键,如果按下了返回键,则无效。

七、Activity的跳转Activity跳转,无返回结果 这是最简单的Activity跳转方式。从一个Activity启动另一个Activity,直接startActivity(new Intent(当前Activity.this, 下一Activity.class))。

Activity跳转,返回数据/结果 需要返回数据或结果的,则使用startActivityForResult(Intent intent, int requestCode),requestCode的值是自定义的,用于识别跳转的目标Activity。跳转的目标Activity所要做的就是返回数据/结果,setResult(int resultCode)只返回结果不带数据,或者setResult(int resultCode, Intent data)两者都返回!而接收返回的数据/结果的处理函数是onActivityResult(int requestCode, int resultCode, Intent data),这里的requestCode就是startActivityForResult的requestCode,resultCode就是setResult里面的resultCode,返回的数据在data里面。

** 注意,在setResult后,要调用finish()销毁当前的Activity,否则无法返回到原来的Activity,就无法执行原来Activity的onActivityResult函数,看到当前的Activity没反应。

第五篇:Android总结

Android四大组件:

Activity—表现屏幕界面

Service—后台服务

BroadcastReceiver—实现广播机制

ContentProvider—实现数据存储

Intent类:用来启动程序并传递信息的类

用于Activity、Receiver、Service之间进行交互的类,通过无参构造方法创建对象,增加其action、category、data、extra等属性进行信息传递,并通过Activity中的startActivity(Intent intent)进行界面的跳转;通过Context中的StartService(Intent intent)进行服务跳转;通过Context中的registerReceive(Intent intent)对广播进行注册,并通过sendBroadcast()进行无序消息发送,或可以通过SendOrderedBroadcast()进行有序的消息发送。Handler类:

用来发送和处理消息,并配合主线程完成UI的更新;消息Message/Runnable传递通过MessageQueue(消息队列,先进先出)进行传递,并通过Lopper进行接收,传递的消息可以为Message对象,也可以是Runnable对象;接收方法通过HandleMessage(Message msg)进行获取。SharedPreferences类:

一般用于第一次登录时的设置,或者是各个界面的一些小型格式设置,如字体等。是本地的小型共享数据库,可以通过Context的静态方法getSharedPreferences获得其对象,对象内的值均为键值对进行储存。通过SharedPreferences对象调用editor()获取SharedPreferences.Editor对象,向共享数据库中增加数据,putString(),并提交数据,commit();通过SharedPreferences对象获取共享数据库中的数据,getString()。

ViewPager:实现界面滑动的类;

通过设置OnPagerChangedListener设置ViewPager的监听事件;

实现流程:

①布局文件中设置ViewPager控件;

②代码中进行绑定控件;

③通过继承PagerAdapter抽象类进行设置适配器,并传递数据源;

④适配器中实现两个抽象方法,两个重写方法:getCount()—获取滑动界面的数量,isViewFromObject()—判断视图是否是来自于Object文件中;重写两个方法,分别为destoryItem—销毁指定位置的视图;InstantiateItem(),设置指定位置的视图;

Timer与TimerTask类:

Timer为计时器的类,通过无参构造方法可以获取对象,通过Timer.schedule(TimerTask task,long time)进行设置多久后执行某任务,当任务执行完后,取消计时的功能,Timer.cancle();TimerTask类为抽象类,实例化时,必须重写run方法;执行的内容,均在run方法中进行设置,并且执行时,已在子线程中进行执行。自定义View:用到的类有Paint、Canvas、Spec、SpecF、Path、View.MeasureSpec、Timer、TimerTask;

抽象类,通过子类继承,获取对象;在布局文件中绑定后,通过代码,设置自定义View的属性;自定义View中,通过重写OnMeasure方法,对布局文件中的尺寸进行测量,并由View中的setMeasureDimenson()方法,进行数据的保存;通过重写Ondraw方法,进行绘图;当需要绘制动态图形时,使用计时器Timer的schedule(TimerTask,long time,delay time2)方法,在time时间后,每隔time2时间,重写执行run方法中的内容;将耗时的操作设置在run方法中,并通过View中的invalidate()方法刷新主线程中的绘的图形,通过postInvalidate()刷新子线程中的图形。数据库:

常用的数据库有Oracle,需要安装和配置的大型收费数据库;MySQL是中型数据库,同样需要安装配置,但不需要收费;Sqlite是小型免费的嵌入式数据库,占用内存低,最新版本为3.0。Sqlite数据库需要通过SqliteDatabaseOpenHelper进行创建数据库,并通过SqliteDatabase进行数据库的操作。辅助类是抽象类,通过继承,重写两个方法,并在子类的构造方法中通过OpenHelper的构造方法(Context context,String SqlName,SqliteDatabase.CursorFactory factory,int version)进行数据库的创建,在onCreate方法中,进行数据库表的创建,在onUpdate中进行数据库的版本更新。在数据库的操作类中,执行exect方法,通过sql语句对数据库进行操作。Create table student(_id integer primary key auto increament ,name text);insert into student(_id,name)values(1,zx);delete from student where _id=1;update student set _id=2 where name=zx;select *from student;ListView、GridView适配器的优化:

将布局文件中的控件进行封装,当视图加载时,判断可变视图是否存在,当不存在时,通过布局文件获取视图,并新建封装类,将地址通过setTag()进行发送;当视图存在时,重复利用地址—getTag()。反射:

存储数据的方式:

共享数据库、数据库、文件、网络、内容提供者

广播:

广播传播时,需要接收者、发送者、广播频道;根据发送者的发送方式不同,分为有序广播、无序广播;有序广播为接收者有接收顺序,根据设置的优先级不同,确定先后顺序,接收者同时也是发送者,向后面的广播发送消息,发送过程中,可以添加信息,也可以停止广播的传输;无序广播,接收者之间无联系,均从发送者处接收信息;广播在传输过程中,不能被添加信息,也不可能被停止。广播在发送前,需要对接收者进行注册,注册方式有两种,动态注册、静态注册。动态注册,是在代码中进行,通过Context对象调用静态方法进行注册,所有的广播均可以用动态注册,其生命周期依赖于应用,相对于静态注册,比较节省内存;静态方法在清单文件中进行注册,部分系统广播不能通过静态注册进行,其生命周期依赖于系统,当系统启动,即运行接收广播,较耗内存。广播接收者需要继承BroadcastReceiver,并实现抽象方法onReceive(),通过回调接口,进行数据的传输。注意:广播发送前,必须进行接收者的注册,并且,当显示跳转时,不需要意图过滤器。安卓布局:九种布局

线性布局,水平或垂直方向两种格式,主要特点为权重,即规定各控件在视图中的占有的比例;

相对布局,相对于父控件或兄弟控件的布局,各控件需指定相对位置; 绝对布局,指定各控件在视图中的绝对位置,几乎不再使用; 表格布局,子布局放在行中,列由控件表示(TableRow); 帧布局:覆盖前面布局的布局,一般用于暂停按钮等; 风格布局:可以跨行、跨列的布局,占满换行;

左右侧滑:可以实现左右侧滑,通过设置主菜单和二级菜单设置左右两个菜单; 下拉刷新:设置下拉刷新、上拉加载的功能; 抽屉布局;

安卓版本及对应的API:

1.6—4;2—7;3—11;4—15;4.3—18;5—20;5.1—21;6—23;7—25; 安卓四层架构:

应用层:Java语言开发,主要从事App开发;

运行库层:Java语言与C语言,View视图、管理类等的开发; 架构层:C语言与Linux语言,各种框架、浏览器等; 内核层:Linux、C语言,开发各种驱动; 安卓四大组件:

Activity:界面,实现程序与用户之间的交换,有自己的生命周期,七个生命周期;4种启动模式 Service:

BroadcastReceive:三要素,发送者、接收者、发送频道(Intent);类型:有序(接收有序,有数据传送,可以拦截数据)、无序广播(相对);注册方式:静态注册,持久监听,占用内存比较高生命周期跟随系统,动态注册(代码中),所有广播都可以动态注册,部分系统广播不能动态注册,临时监听,占用内存较少,生命周期随应用进行;

ContentProvide:不能存放数据,五种存放数据方式之一,特点为:①为数据的获取等操作添加一个统一的接口②可以实现跨应用访问数据;③可以实现Android中通讯录、消息、音频、视频等的访问或操作;通过ContentReceive进行数据的访问,可以对数据进行增删改查操作。

动画: IO流: 序列化: AlertDialog:

Set实现类: 手机电量检测:

自定义SurfaceView:

自定义View:三个构造方法的区别

Message:Handler.obtain/new/Message.obtain

HttpUriConnection访问网络

gride 异步任务 动画

抽象类和接口 反射 克隆 序列化 侧滑的实现 数据库 Socket:

Gson解析

异步任务和子线程区别 WebView 版本更新 照片的圆角化

Collection与Collections Sql语句

MVP框架与MVC: TCP与UDP的区别: 一键分享的流程: Http协议的理解: 不使用框架访问网络: List集合与set集合: 自定义View的流程: 线性布局的特点: ViewPager的原理: 服务的启动方式:

Activity的启动方式: Xml数据解析:

下载Android 退出activity 的方式总结word格式文档
下载Android 退出activity 的方式总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    Android WebView总结(合集)

    Android WebView总结 1、添加权限:AndroidManifest.xml中必须使用许可"Android.permission.INTERNET",否则会出web page not available错误。 2、在要Activity中生成一个WebV......

    Android 课程总结

    一、 Android开发环境的搭建。 1、 Android SDK的安装; 2、 ADT的安装和配置; 3、 Android 模拟器的配置。 二、 编写第一个Android程序───Hello World(1学时) 1、 创建一......

    Android方案总结

    一、硬件描述 如上图,应用程序的开发过程中我们使用了飞思卡尔的i.MX51 EVK Hardware。 设备提供的支持如下:多标准音频回放;多标准视频回放;开放的系统支持; 二、软体结构 1、An......

    Android面试总结

    1.activity的生命周期。 activity主要生命周期的方法说明: onCreate(Bundle savedInstanceState):创建activity时调用。设置在该方法中,还以Bundle的形式提供对以前储存的任......

    Android培训总结(定稿)

    Android培训总结 非常高兴能够参加清华大学的Android暑期培训,感谢老师们对我们的教导和关心,在短短一个月的时间里我学到了Java、数据库、Android、JSP等知识。最重要的是通......

    Android 个人总结

    Android 个人总结 通过本学期的的学习,我知道了android是由google开发的一款手机平台,android的基本架构是基于linux内核,由内核向外的反别为库和应用架构,然后就是我们手机上的......

    Android学习总结

    Android学习总结 零零碎碎的总结:1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍. 2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子......

    Android蓝牙连接总结

    蓝牙连线时首先会定义一个专门用来连接的函数体BtconnectDevice,当按下Btconnect(为一个Buttton名时)时,程序会判断此时Btconnect键是什么状态,当Btconnect键为连接状态时,因为按......