`

Android一些特殊方法

阅读更多

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卡顿主要是主线程中有耗时操作导致的,那么我们怎么能方便快捷的获取主线程中的所有耗时方法执行时间呢?今天我们来介绍两个方案 方案一:利用Looper.java中loop()方法的logging.print的特殊关键字...

    Android TextView 去掉自适应默认的fontpadding的实现方法

    Android TextView 去掉自适应默认的fontpadding的实现方法 最近在项目中使用textview时发现在使用Android:layout_height=”wrap_content”这个属性设置后,textview会有默认的padding,也就是fontpadding。这样就会...

    Android代码-SmartPopupWindow

    提供关于PopupWindow使用过程中遇到的一些特殊问题的解决方案 PopupWindow不响应点击外部消失和返回键消失的解决方法博文地址:http://www.cnblogs.com/popfisher/p/5608717.html PopupWindow精确计算要显示位置...

    android开机自启动APP及使用adb命令测试方法

    这里说个题外话,手机软件除非特殊情况,不然最好不要做开机自启动,开机自启动一般适用于android系统的终端机上,开机即运行相应的项目,该机器上也只有这个项目,下面上代码。 新建一个类AutoSta

    Android获取当前应用分配的最大内存和目前使用内存的方法

    Android 原生系统一般默认16M,但是国内手机一般都是特殊定制的,都有修改系统的内存大小,所有有时候,要查看具体应用系统分配的内存大小,还是需要实际去测试的, 测试方法如下: 方式一: ActivityManager ...

    android 删除图片视频代码

    android 删除图片视频代码,比较全面的代码,可以按照里面的方法从而也可以删除其他特殊的文件。。

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    Android课程第一次实验报告_Andorid应用程序Activity生命周期.docx

     Android一个重要并且特殊的特性就是,一个应用的进程的生命周期不是由应用自身直接控制的,而是由系统,根据运行中的应用的一些特征来决定的,包括:这些应用对用户的重要性、系统的全部可用内存。  对于应用...

    android同时控制EditText输入字符个数和禁止特殊字符输入的方法

    主要介绍了android同时控制EditText输入字符个数和禁止特殊字符输入的方法,涉及Android操作EditText控制字符操作的技巧,需要的朋友可以参考下

    Android之AppWidget(桌面小部件)开发浅析

    AppWidget 是Android 系统应用开发层面的一部分,有着特殊用途,使用得当的化,的确会为app 增色不少,它的工作原理是把一个进程的控件嵌入到别外一个进程的窗口里的一种方法。长按桌面空白处,会出现一个 AppWidget...

    Android使用shape使组件呈现出特殊效果的方法

    主要介绍了Android使用shape使组件呈现出特殊效果的方法,结合实例形式分析了Android中shape文件相关属性、功能及使用方法,需要的朋友可以参考下

    Android开发艺术探索

    15.1 Android的性能优化方法 / 490 15.1.1 布局优化 / 490 15.1.2 绘制优化 / 493 15.1.3 内存泄露优化 / 493 15.1.4 响应速度优化和ANR日志分析 / 496 15.1.5 List View和Bitmap优化 / 501 15.1.6 线程...

    Android异步方法以同步方式实现

    Android系统中规定耗时任务需要在异步线程中进行,特别是网络请求必须在异步线程中进行否则会抛出NetworkOnMainThreadException,但是在一些特殊的情况我们需要保证在获得到网络请求结果之后在进行余下操作,这时候便...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。 第1章 Activity的生命周期和...

    Android widget桌面插件

    Android widget是桌面插件,在android系统应用开发层面有特殊用途。AppWidget是把一个进程的控件嵌入到别外一个进程的窗口里的一种方法。悬浮窗的效果与Widget很类似,但是它比Widget要灵活的多。

    Android代码-Eyepetizer

    自定义一个文字动画(轮播图上的两行文字,逐字出现),代码点击查看(之前用ondraw的方法实现,结果发现当文字中有特殊字符的时候,宽度测量会有很大的偏差,所以用了新的方法:添加一个invisiable的textview用来...

    Android插件框架Android-Plugin-Framework.zip

    Android-Plugin-Framework 此项目是Android插件框架完整源码以及实例。用来开发Android插件APK,并通过动态加载的方式在宿主程序中运行。 若插件APK是完全独立的APK,那么插件apk也可独立安装运行。 若...

    android 插件plugin

    无法在插件中注册一些具有特殊Intent Filter的Service、Activity、BroadcastReceiver、ContentProvider等组件以供Android系统、已经安装的其他APP调用。 - f. 缺乏对Native层的Hook,对某些带native代码的apk支持...

    Android静默安装常用工具类

    Android Parcel工具类,可用于从parcel读取或写入特殊类型数据,如: readBoolean(Parcel in) 从pacel中读取boolean类型数据 readHashMap(Parcel in, ClassLoader loader) 从pacel中读取map类型数据 writeBoolean...

Global site tag (gtag.js) - Google Analytics