1、判断一个程序是否显示在前端
/** * 判断一个程序是否显示在前端 * * @param packageName程序包名 * @param context上下文环境 * @return true--->在前端,false--->不在前端 */ public static boolean isApplicationShowing(String packageName, Context context) { boolean result = false; ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> appProcesses = am.getRunningAppProcesses(); if (appProcesses != null) { for (RunningAppProcessInfo runningAppProcessInfo : appProcesses) { if (runningAppProcessInfo.processName.equals(packageName)) { int status = runningAppProcessInfo.importance; if (status == RunningAppProcessInfo.IMPORTANCE_VISIBLE || status == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { result = true; } } } } return result; }
可以根据importance的不同来判断前台或后台
RunningAppProcessInfo 里面的常量IMOPORTANCE就是上面所说的前台后台,其实IMOPORTANCE是表示这个app进程的重要性,因为系统回收时候,会根据IMOPORTANCE来回收进程的。具体可以去看文档。。
public static final int IMPORTANCE_BACKGROUND = 400//后台
public static final int IMPORTANCE_EMPTY = 500//空进程
public static final int IMPORTANCE_FOREGROUND = 100//在屏幕最前端、可获取到焦点 可理解为Activity生命周期的OnResume();
public static final int IMPORTANCE_SERVICE = 300//在服务中
public static final int IMPORTANCE_VISIBLE = 200//在屏幕前端、获取不到焦点可理解为Activity生命周期的OnStart();
2、用于判断当前是否处于锁屏状态
/** * 用于判断当前是否处于锁屏状态 * * @param context * @return */ public static boolean isApplicationLocked(Context context) { KeyguardManager keyguardManager = (KeyguardManager) context .getSystemService(KEYGUARD_SERVICE); boolean isLockedState = keyguardManager.inKeyguardRestrictedInputMode();// 用于判断当前是否处于锁屏状态。 return isLockedState; }
3、Activity中finish() onDestroy() 和System.exit()的区别
Activity.finish()
Call this when your activity is done and should be closed.
在你的activity动作完成的时候,或者Activity需要关闭的时候,调用此方法。
当你调用此方法的时候,系统只是将最上面的Activity移出了栈,并没有及时的调用onDestory()方法,其占用的资源也没有被及时释放。因为移出了栈,所以当你点击手机上面的“back”按键的时候,也不会再找到这个Activity。
Activity.onDestory()
the system is temporarily destroying this instance of the activity to save space.
系统销毁了这个Activity的实例在内存中占据的空间。
在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间等就被回收了。当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。
System.exit(0)
这玩意是退出整个应用程序的,是针对整个Application的。将整个进程直接KO掉。
------------------------------------------
finish函数仅仅把当前Activity退出了,但是并没有释放他的资源。安卓系统自己决定何时从内存中释放应用程序。当系统没有可用内存到时候,会按照优先级,释放部分应用。
相关推荐
同时,根据Android开发文档,从Android 4.2(Jelly Bean)开始,使用addJavascriptInterface()方法时需要特别注意,因为这个方法可能会引入安全风险,尤其是当JavaScript代码来自不可信的源时。如果应用的targetSdk...
我们知道Android卡顿主要是主线程中有耗时操作导致的,那么我们怎么能方便快捷的获取主线程中的所有耗时方法执行时间呢?今天我们来介绍两个方案 方案一:利用Looper.java中loop()方法的logging.print的特殊关键字...
本项目"Android split处理特殊字符"专注于解决`split()`方法在面对特殊字符时可能遇到的问题,例如"."、"|"、"*"、"\"和"]"等。这些字符在正则表达式中具有特殊含义,因此在用它们作为分隔符时,如果不进行适当的...
### Android界面特殊效果全汇总 #### 一、Activity页面切换效果 在Android开发中,页面间的过渡动画可以显著提升用户体验,让应用看起来更加流畅和专业。从Android 2.0开始,开发者可以通过`...
Android截屏截图的几种方法总结 Android截屏截图是 Android 开发中常见的需求, Android 截屏截图方法汇总将为您带来多种截屏截图方法的总结,让您更好地掌握 Android 截屏截图技术。在本文中,我们将探讨 ...
首先,`query()`方法是Android中进行数据库查询的主要接口,它来自`android.database.sqlite.SQLiteDatabase`类。该方法接受多个参数,包括表名、列名、筛选条件等。其中`selection`参数用于指定SQL查询语句的`WHERE...
Android TextView 去掉自适应默认的fontpadding的实现方法 最近在项目中使用textview时发现在使用Android:layout_height=”wrap_content”这个属性设置后,textview会有默认的padding,也就是fontpadding。这样就会...
然而,Android 的默认 Progress 控件功能有限,无法满足一些特殊的业务需求。因此,自定义 Progress 控件成为了一种必要的解决方案。本文将详细介绍 Android 自定义 Progress 控件的方法,包括自定义控件的创建、...
### Android常见控件及其使用方法 #### 基本组件 **1. 文本框(TextView)与编辑框...以上介绍了Android开发中常用的一些UI控件及其基本使用方法。掌握这些控件可以帮助开发者更好地构建功能丰富的应用程序。
在库中,提供一些公开的方法供外部调用,如设置数据、颜色、动画速度等。 最后,测试和优化是必不可少的步骤。确保环形图在不同尺寸和方向的屏幕上都能正常显示,同时考虑性能优化,减少不必要的计算和重绘。 综上...
在Android应用开发中,有时我们需要隐藏系统默认的软键盘,以提供特定的用户体验或界面设计需求。KeyHide就是这样一种工具,它提供了一种简洁的方法来实现这个功能。在这个项目中,我们将深入理解KeyHide的工作原理...
在Android开发中,有时我们需要对显示的图片进行特殊处理,比如让图片呈现圆角或完全圆形。本知识点将深入探讨如何在Android应用中完美实现图片的圆角和圆形效果。 首先,我们来看如何实现图片的圆角效果。Android...
本文将详细介绍三种实现Android滑屏效果的方法:使用ViewPager、GestureDetector和自定义View。 1. **ViewPager** ViewPager是Android SDK中的一个控件,主要用于在多个页面间进行左右滑动切换。它可以自动处理...
`onKeyDown`方法是Android系统中的一个关键函数,它位于`Activity`类中,用于处理物理键盘或软键盘的按键事件。当用户按下键盘上的键时,系统会调用此方法,并传递一个`KeyEvent`对象,该对象包含了按键的相关信息,...
### Android手机另类刷机方法之...本文介绍了一种基于ADB的特殊刷机方法,通过这种方式可以更灵活地管理和更新Android设备。掌握这些技巧对于开发者来说是非常有用的,可以帮助他们更好地控制和优化Android系统的性能。
Dalvik 文件是一种特殊的字节码格式,用于存储 Android 应用程序的编译后的代码。Dalvik 文件的扩展名为 `.dex`,它是 Android 操作系统中的虚拟机字节码格式。 Dalvik 文件包含了应用程序的代码、资源和数据,...
在Android开发中,String Resources是用于管理应用内所有文本内容的重要工具。它允许开发者在一个集中的地方定义字符串,便于维护、本地化以及动态格式化。本文将深入探讨Android String Resources的使用,包括国际...
对于更复杂的键盘,如添加特殊符号、切换大小写、设置Shift键等功能,可以扩展`CustomKeyboardService`类和布局文件,增加相应的逻辑处理。 通过这个过程,开发者可以灵活地创建满足特定需求的键盘,提供更好的用户...
`transcriptMode`是Android ListView中的一个特殊属性,它主要用于处理那些需要持续添加新数据项的情况。例如,在聊天应用中,新的消息会被不断地追加到列表的末尾。为了确保用户能够看到最新的消息,我们需要自动...