App前后台判断
http://blog.csdn.net/vpractical/article/details/51034360
需求是计算app在后台的时间,当返回前台时,根据时间差来做相应的操作。
思路是让app中所有的activity都继承baseactivity,然后在baseactivity的onstop()方法中用以下方法判断是否在后台。如果是就开始计时。
在app中做一个标记,记录app是否刚从后台回来。
在onresume()方法中先判断标记是否是刚从后台回来,是的话判断两个时间差跟用户设定的时间是否符合。
BaseActivity中的操作
@Override
protected void onStop() {
super.onStop();
boolean background = AppIsBackgroundOrForeGroundUtils.isBackground(this);//里面封装的判断前后台的方法。
if (background) {
MyApp.isToBackground = true;
MyApp.currentTime = SystemClock.currentThreadTimeMillis();
} } @Override
protected void onResume() {
super.onResume();
if (MyApp.isToBackground) {
MyApp.isToBackground = false;
long diffTime = SystemClock.currentThreadTimeMillis() - MyApp.currentTime; String setTime = UserInfoCacheSpHelper.getInstance(this).getUserData(Constant.SAFETIME);
if(setTime==null||"总是".equals(setTime)){
setTime=0+"";
}
long saveTime = Integer.parseInt(setTime) * 60 * 1000;
if ((diffTime - saveTime) >= 0) {
finish();
startActivity(new Intent(this, SplashActivity.class));
}
} }
判断是否在后台的两种方法:
/**
* Created by Administrator on 2016/12/2.
*/
public class AppIsBackgroundOrForeGroundUtils { /**
*判断当前应用程序处于前台还是后台
* 该方法通过RunningTaskInfo类判断,需要在清单文件中添加权限
* <uses-permission android:name="android.permission.GET_TASKS" />
*/
public static boolean isApplicationBroughtToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(context.getPackageName())) {
return true;
}
}
return false; } /**
* 通过RunningAppProcessInfo类判断(不需要额外权限):
* @param context
* @return
*/
public static boolean isBackground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(context.getPackageName())) {
if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
Log.i("background", appProcess.processName+"后台");
return true;
}else{
Log.i("background", appProcess.processName+"前台");
return false;
}
}
}
return false;
} }
App前后台判断的更多相关文章
- Android使用ActivityLifecycleCallbacks管理Activity和区分App前后台
一.ActivityLifecycleCallbacks接口介绍 官方地址:https://developer.android.com/reference/android/app/Applicatio ...
- 【移动测试】你的测试用例中,是否包含App前后台切换
App前后台切换是我们平时常用的一个操作,比如:按手机的home键将应用置于后台.直接按手机电源键关闭屏幕或者通过最近打开的应用列表切换应用等,由此,我们可以得出结论:当app置于前台时,它的页面对我 ...
- web页面打开本地app(判断是否安装)
在应用宝中有APP申请链接: //是否可以打开App不可以跳则到下载页 $(".downNow button").on("click",function(){ ...
- js判断终端以及APP应用判断
**第一种:通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端.代码如下:** <script type="text/javascript"& ...
- 如何应用前端技术唤起app及判断用户来源及与原生交互的原理
做唤起时需要native端进行配合, h5唤起app这种需求是常见的.在移动为王的时代,h5在app导流上发挥着重要的作用. 目前我们采用的唤起方式是url scheme(iOS,Android平台都 ...
- Android APP前后台状态切换
getActivity().getApplication().registerActivityLifecycleCallbacks(new Application.ActivityLifecycleC ...
- Android 监听APP进入后台或切换到前台方案对比
在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况.比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作:我们想判断app切换到后台,记 ...
- App测试
(1)App独特测试点: 客户端兼容性测试:系统版本.不同深度定制的rom.屏幕分辨率.中断测试.安装.卸载.升级.对其他程序的干扰等 需要的一些工具: appnium / lr / jmeter ...
- APP测试流程
1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先向 ...
随机推荐
- 获取程序的SHA1值
android获取程序的SHA1值 public static String getSHA1(Context context) { try { PackageInfo info = context.g ...
- 被swoole坑哭的PHP程序员
被swoole坑哭的PHP程序员 2015-09-16 09:57 文帅营 博客园 字号:T | T 首先说一下对swoole的理解:披着PHP外衣的C程序.很多PHPer朋友看到swoole提供的强 ...
- wordpress 分类相关
分类类型,层级 wp中的分类.文章类型(post,page,video,image).标签.自定义分类.自定义标签都是分类形式.有些分类是有层级关系,有些没有.如图: taxonomy分类(categ ...
- [bzoj2463]谁能赢呢
我们通过观察可以发现,当n为偶数时,一定可以转化为一种先手必胜态,即棋盘可以被骨牌所覆盖, 如果n是奇数,那么去掉一格后一定能被1*2的骨牌覆盖,但是先手从左上角走,就进入了这个S态(必胜态),那么和 ...
- 关于AFNetworking中header的bug问题
关于AFNetworking中header的bug问题 [摘要:AFNetworking那个正在ios开辟中便未几道了,网上一搜一大推,然则详细用法我便没有道了,偶然间我会整顿一下详细的一些用法.本日 ...
- 企业app分发
http://beyondvincent.com/2014/07/30/2014-07-30-provision-ios-ipa-app-for-in-house-enterprise-distrib ...
- js 基础
js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避 ...
- struts2项目启动报错。关于jar的问题
严重: Exception starting filter struts2 Unable to load configuration. - bean - jar:file:/D:/apache-tom ...
- http://www.cnblogs.com/Lawson/archive/2012/09/03/2669122.html
http://www.cnblogs.com/Lawson/archive/2012/09/03/2669122.html
- http://www.cnblogs.com/holly8/p/6178828.html
http://www.cnblogs.com/holly8/p/6178828.html