首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android项目实战(二):安卓应用程序退出的三种方法

dialog.show(); 33 } 34 35 return super.onKeyDown(keyCode, event); 36 } 二、连续按两次后退键退出...,一般两次按键时间间隔为2秒 (1)一般思路方法: 思路。...一个应用程序第一次按后退键为 “第一次”  之后的每次按后退键:对于上一次为“第二次”,对于下一次为"第一次" ,判断两次按键时间的差的绝对值是否小于2000(毫秒) 1 public class MainActivity...111 // 112 // return super.onKeyDown(keyCode, event); 113 // } 114 115 } 三、连续按两次后退键退出...,一般两次按键时间间隔为2秒(handler方法) 设置一个标记变量isExit = false; 当点击后退按钮的 时候 (1)如果isExit为true 退出程序 (2)如果isExit为false

1K50

【Android】Service介绍和生命周期

Android中的服务Service,和Activity不同的是不能与用户交互的,不能自己启动,系统的后台运行,当程序退出时,我们没有显示的调用停止服务,那么这个Service就没有结束,它仍然在后台运行...服务一般分为两种: 本地服务:用于应用程序内部,在Service可以调用startService()启动,调用stopService()结束,无论调用了多少次startService(),都只需调用一次...服务可以开启多次,每次开启都调用onStartCommand 2. 服务只能停止一 3....绑定服务调用服务里的方法 区别 start开启服务可以长期运行在后台,服务组件在自己的应用程序中 bind绑定服务可以调用服务里的方法,服务组件不在自己的应用程序中 IntentService...与Service Android中的Service是用于后台服务的,当应用程序挂到后台的时候,问了保证应用某些组件仍然可以工作而引入了Service这个概念,那么这里面要强调的是Service不是独立的进程

1100
您找到你想要的搜索结果了吗?
是的
没有找到

Android基础部分再学习---activity的生命周期

1、onCreate 最重要是在里面调用setContentView,还可以在里面初始化各控件、设置监听、并初始化一些全局的变量。...即便是内存不足,回收了,再次Recreate的话,又是一次新的生命周期的开始,又会执行onCreate方法。...(这个需要根据实际情况来确定) 2、onDestory 确定某些资源是否没有释放,做一些最终的清理工作,比如在这个Activity的onCreate中开启的某个线程,那么就要在onDestory中确定它是否结束了...3、onStart和onRestart、onStop Activity进入到Stopped状态之后,它极有可能系统所回收,在某些极端情况下,系统可能是直接杀死应用程序的进程,而不是调用onDestory...需要把异常捕获到   需要注意的是,这两个方法,会导致进程非正常退出,就是说,进程退出时不会去执行onPause、onStop和onDestroy方法,那么进程很有可能错过了保存数据的机会。

87020

Android 进阶解密笔记-热修复

比如:当Activity的onDestroy()方法调用后,Activity以及它涉及到的View和相关的Bitmap都应该被回收掉。...但是,如果有一个后台线程做耗时操作,导致生命周期比Activity长,造成GC无法回收Activity,就造成内存泄漏。 内存泄漏后果 它是造成应用程序OOM的主要原因之一。...由于android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏比较多时,就难免会导致应用所需要的内存超过这个系统分配的内存限额,这就会导致程序崩溃等严重后果。...如果此时activity要退出了,想要调用destroy销毁,但是此时Looper正在处理消息,Looper的生命周期明显比activity长,这将使得activity无法GC回收,最终造成内存泄漏。...不能系统回收,从而导致了MainActivity的内存泄漏。

38120

Android 内存泄漏

比如:当Activity的onDestroy()方法调用后,Activity以及它涉及到的View和相关的Bitmap都应该被回收掉。...但是,如果有一个后台线程做耗时操作,导致生命周期比Activity长,造成GC无法回收Activity,就造成内存泄漏。 内存泄漏后果 它是造成应用程序OOM的主要原因之一。...由于android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏比较多时,就难免会导致应用所需要的内存超过这个系统分配的内存限额,这就会导致程序崩溃等严重后果。...如果此时activity要退出了,想要调用destroy销毁,但是此时Looper正在处理消息,Looper的生命周期明显比activity长,这将使得activity无法GC回收,最终造成内存泄漏。...不能系统回收,从而导致了MainActivity的内存泄漏。

1.9K30

Android Service学习之本地服务

可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。...使用startService()方法启用服务,调用者与服务之间没有关连,即使调用退出了,服务仍然运行。...如果调用startService()方法前服务已经创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。...该方法在调用者与服务绑定时调用,当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法多次调用。...如果service正在调用onCreate,onStartCommand或者onDestory方法,那么用于当前service的进程则变为前台进程以避免killed。 2.

71150

Android 内存泄漏分析心得

导致了当旋转屏幕时,Activity无法回收,而造成内存泄露。...Activity无法垃圾回收器回收,而导致了内存泄露。...因此对于资源性对象在不使用的时候,应该调用它的close()函数,将其关闭掉,然后才置为null. 在我们的程序退出时一定要确保我们的资源性对象已经关闭。...所以要在退出程序之前,将集合里的东西clear,然后置为null,再退出程序。 解决方案: 在Activity退出之前,将集合里的东西clear,然后置为null,再退出程序。...WebView造成的泄露 当我们不要使用WebView对象时,应该调用它的destory()函数来销毁它,并释放其占用的内存,否则其占用的内存长期也不能回收,从而造成内存泄露。

2.4K10

Android基础_1 四大基本组件介绍与生命周期

onCreate()-->onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用退出时系统会调用服务的 onUnbind()-->onDestory(),想主动解除绑定可使用Contex.unbindService...(相当于在应用外包了一层壳), 只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据多个应用程序使用,且必须存储在一个内容提供者中 它的好处:统一数据访问方式。...1. onCreate(Bundle savedInstanceState)       当Activity第一次实例化的时候系统会调用,整个生命周期只调用1次这个方法。...系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate ()方法中创建的资源,如结束线程等 2.2.3     3个嵌套循环 1.Activity完整的生命周期:从第一次调用onCreate...()来停止服务时系统调用,(整个生命周期只调用1次)用来释放onCreate()方法中创建的资源 void onDestroy() 通过startService()方法启动的服务       初始化结束后系统会调用该方法

1.4K30

Android的bitmap和优化

经验分享: Android手机的用户,根据习惯不同,可能会有两种方式退出整个应用程序:一种是按Home键直接退到桌面;另一种是从应用程序退出按钮或者按Back键退出程序。...按Home键,应用程序并没有关闭,而是成为了后台应用程序。按Back键,一般来说,应用程序关闭了,但是进程并没有被杀死,而是成为了空进程(程序本身对退出做了特殊处理的不考虑在内)。...个人建议,应用程序退出应用的时候不需要手动杀死自己所在的进程。对于应用程序本身的进程管理,交给Android系统来处理就可以了。应用程序需要做的,是尽量做好程序本身的内存管理工作。...静态变量是类相关的变量,它的生命周期是从这个类声明,到这个类彻底垃圾回收器回收才会被销毁。所以,一般情况下,静态变量从所在的类使用开始就要一直占用着内存空间,直到程序退出。...,从而导致第一次创建的Activity中的所有对象都不能回收。

49410

BAT Android常见面试题详解

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2、设置Activity的android:configChanges...启动后若调用者未调用stopService而直接退出,Service仍会运行 bindService:生命周期与调用者绑定,调用者一旦退出,Service就会调用unBind->onDestroy 7、...它描述的是一个应用程序环境的信息,通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息等 8、Service的onCreate回调在...3、坏处的话,多占用了系统的空间,大家都这么用的话系统内存很容易占满而导致卡顿。消耗用户的电量。应用程序架构会变复杂,应为要处理多进程之间的通信。这里又是另外一个问题了。 16、ANR是什么?...在Message中存在一个 target,是Handler的一个引用,如果Message在Queue中存在的时间越长,就会导致Handler无法回收。

71520

Activity的启动模式

在Android程序中,应用程序通过活动栈来管理Activity,活动栈中有多少个Activity对象,我们在退出程序的时候就要按多少下返回键(即要将活动栈中的所有Activity出栈),但是这样的话难免会有活动栈中存在相同的...方法调用,并且MainActivity处于活动栈栈顶(这绝对是当然的),然后单击按钮两次,我们在Android模拟器中可以看到MainActivity又被创建了两次,而此时的LogCat中的信息: !...然后我们再点击一下“启动SecondActivity”按钮,我们会发现LogCat的信息并没有什么变化,此时也只需要点击两次BACK键就能退出程序。...aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSGFja2VyX1poaURpYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 我们会发现SecondActivity创建了两次...结果显而易见,如我们所愿,单击“启动MainActivity”按钮之后,之前在MainActivity上面的两个SecondActivity系统回收(调用onDestroy方法),自然MainActivity

59210

Android 关于内存泄露,你必须了解的东西

但是过多的单例会让内存占用过多,而且单例模式由于其 静态特性,其生命周期 = 应用程序的生命周期,不正确地使用单例模式也会造成内存泄露。...这样的话,即使该 Activity 退出,该 Activity 的内存也不会被回收,这样就造成了内存泄露,特别是一些比较大的 Activity,甚至还会导致 OOM(Out Of Memory)。...class 对比 static inner class non static inner class 与外部 class 引用关系 如果没有传入参数,就没有引用关系 自动获得强引用 调用时需要外部实例...如果在耗时操作结束之前,Activity 销毁了,这时候因为 MyAsyncTask 持有 Activity 的强引用,便会导致 Activity 的内存无法回收,这时候便会产生内存泄露。...Activity 的 onDestroy() 方法中,移除所有的消息 mHandler.removeCallbacksAndMessages(null); 3、集合类 集合类添加元素后,仍引用着集合元素对象,导致该集合中的元素对象无法回收

1.1K10

安卓基础干货(八):安卓进程的学习

进程的生命周期: 1、应用程序一启动的时候就创建了进程; 2、当应用程序退出的时候进程并没有退出; 3、只有手工停止这个进程,进程才会结束; 操作系统尽量长时间的运行应用程序的进程,为了保证内从空间不被大量占用...,activity执行了onstop方法 Empty process(空进程) 没有任何组件运行,所有的activity都关闭了,任务栈清空了 服务的特点 服务的特点: 服务创建时调用onCreate.../** * 当服务创建的时候调用这个方法 */ @Override public void onCreate() { System.out.println...生命周期的方法: onCreate:服务创建的时候调用这个方法; onStartCommand :开启服务 onDestroy:销毁服务 bind方式开启服务的生命周期(重点) bindService...绑定服务、unBindService解除绑定的服务; 服务是在被绑定的时候创建,调用oncreate、onbind方法; 服务只能被绑定一次; 服务只能解除一次,接触绑定的时候调用onUnbind、

4K10

安卓的四大组件之Activity-活动

onSaveInstanceState方法接收一个Bundle类型的参数,开发者可以将状态数据存储到这个Bundle对象中,这样即使activity系统回收了,但是用户重启这个activity而调用它的...onCreate方法的时候,上面的Bundle对象会作为实际参数传递给onCreate方法,开发者可以从Bundle对象取出保存的数据,然后利用这些数据将activity回复到摧毁之前的状态。...需要注意的是,onSavaInstanceState方法不一定会被调用,因为有些场景不需要保存状态数据,比如用户按下BACK键后退出activity时,用户显然想要关闭这个avtivity,此时是没有必要保存数据以提供下一次恢复数据的...,也就是方法不会被调用,如果调用了onSavaIstanceState那么它将在onPause和onStop方法之前调用。...A要开启B,那么A会调用onPause,然后B会调用onCreate,onStart,onRasume方法,这个时候B覆盖了A,导致A调用onStop方法,但是需要注意的是:如果B的窗口是透明的,那么就算是

81650

关于Activity生命周期的小结

); Log.i(TAG, "FirstActivity onCreate"); Button button = (Button) findViewById(R.id.second...所以并不会重新调用onCreate方法。...最后再次点击Back键,退出Activity: 退出Activity的log 写到这里本篇博客的要讲内容已经差不多了,下面再补充一下关于切换横竖屏时Activity的生命周期调用,先前在网上看的一些博文叙述的都已经过时了...2.X 的说法是切横屏时会执行一次,切竖屏时会执行两次,只适用于Android 2.X 版本) 设置android:configChages=”orientation”时,结果和不设置一样,仍然是重新调用生命周期方法...Android4.0版本以上的应用程序只有在AndroidManifest.xml中设置Activity 的android:configChanges="orientation|keyboardHidden

25430

Activity生命周期

foreground process(前景模式)是当前显示于手机屏幕上的应用程序画面,定义为前景模式的进程,其中由onCreate()、onStart() 、onResume() 函数调用的Activity...当对话窗口退出后,原应用程序马上就又变回原前景模式了。   在Activity窗口画面变为透明时,就会由onPause()函数掌控进入暂停状态。   ...当前景进程退出时,该Activity就会再度拉到前景模式,由onResume() 函数唤醒。...其他状态都是转换状态,系统会很快调用其他相应的回调函数离开这些状态。比如系统调用onCreate()之后,会很快调用onStart(),之后是 onResume()。...onDestroy()一般都是在onPause()和onStop()之后调用,但有一个例外的情况:如果在onCreate()中调用finish()方法,系统将会立即调用onDestroy()而不用经过生命周期中的其他阶段

57110

android四大组件

这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind->onDestroy相应退出。...在Service每一次的开启关闭过程中,只有onStart可被多次调用(通过多次startService调用),其他onCreate,onBind,onUnbind,onDestory在一个生命周期中只能调用一次...如果调用startService()方法前服务已经创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。   ...该方法在调用者与服务绑定时调用,当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法多次调用。   ...如果service正在调用onCreate,onStartCommand或者onDestory方法,那么用于当前service的进程则变为前台进程以避免killed。   2.

90110

Android常见问题及开发经验总结(二)

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次  2、设置Activity的android:configChanges...启动后若调用者未调用stopService而直接退出,Service仍会运行  bindService:生命周期与调用者绑定,调用者一旦退出,Service就会调用unBind->onDestroy...它描述的是一个应用程序环境的信息,通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息等 8.Service的onCreate回调在...3.坏处的话,多占用了系统的空间,大家都这么用的话系统内存很容易占满而导致卡顿。消耗用户的电量。应用程序架构会变复杂,应为要处理多进程之间的通信。这里又是另外一个问题了。 16.ANR是什么?...在Message中存在一个 target,是Handler的一个引用,如果Message在Queue中存在的时间越长,就会导致Handler无法回收。

34610
领券