android手势解锁-------后台恢复到前台就启动手势解锁
发布日期:2021-11-12 07:57:21 浏览次数:21 分类:技术文章

本文共 2192 字,大约阅读时间需要 7 分钟。

原文地址:http://blog.csdn.net/u012806692/article/details/50845425

我们在使用支付宝的时候会发现,每次我们按下返回键或者home键回到桌面之后,再次打开此app时就会要求我们输入手势,正确输入后会回到我们退出app时的activity,这个效果该如何实现呢。。。

首先我们要为所有需要后台恢复前台启动手势解锁的activity写一个baseActivity,在这个baseActivity中,在说要重写那几个方法之前,先要做的是分析,activity的声明周期。。。当我们单击返回键的时候activity会执行 onpause->onstop->ondestory,重启应用会执行oncreate->onstart->onresume。当我们点击home键的时候会执行onPause->onStop,重启应用会执行onRestart->onstart->onresume,可以明确的是都会执行onstop方法、onstart方法、onPause方法以及onresume方法,这里就挑选onstop方法、onresume方法这两个方法进行重写,onstop方法中要做的事情是判断该app是否还在前台运行,并且用标志位记录已经在后台。在resume方法中判断标志位,如果已经在后台运行则先启动手势activity,否则不做任何操作。

BaseActivity的代码如下

[java]   
  1. public class BaseActivity extends Activity {  
  2.   
  3.     static boolean isActive = true;  
  4.   
  5.     @Override  
  6.     protected void onStop() {  
  7.         // TODO Auto-generated method stub  
  8.         super.onStop();  
  9.         if(!isAppOnFreground()){  
  10.             Log.d("sqq""back");  
  11.             isActive = false;  
  12.         }  
  13.     }  
  14.   
  15.     @Override  
  16.     protected void onResume() {  
  17.         super.onResume();  
  18.         if(!isActive){  
  19.             //从后台唤醒  
  20.             isActive = true;  
  21.             Intent n = new Intent(this, MainActivity.class);  
  22.             startActivity(n);  
  23.         }  
  24.     }  
  25.       
  26.     /** 
  27.      * 是否在后台 
  28.      * @return 
  29.      */  
  30.     public boolean isAppOnFreground(){  
  31.         ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);  
  32.         String curPackageName = getApplicationContext().getPackageName();  
  33.         List<RunningAppProcessInfo> app = am.getRunningAppProcesses();  
  34.         if(app==null){  
  35.             return false;  
  36.         }  
  37.         for(RunningAppProcessInfo a:app){  
  38.             if(a.processName.equals(curPackageName)&&  
  39.                     a.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND){  
  40.                 return true;  
  41.             }  
  42.         }  
  43.         return false;  
  44.         /*ComponentName cn = am.getRunningTasks(1).get(0).topActivity; 
  45.         if(!TextUtils.isEmpty(curPackageName)&&curPackageName.equals(getPackageName())){
     
  46.             return true; 
  47.         } 
  48.         return false;*/  
  49.     }  
  50.       
  51. }  

每次恢复前台需要验证手势的activity的实现如下

[java]   
  1. public class SetActivity extends BaseActivity {  
  2.   
  3.     Button bt;  
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.set);  
  8.         bt = (Button) findViewById(R.id.set);  
  9.         bt.setText("设置手势");  
  10.         bt.setOnClickListener(new OnClickListener() {  
  11.               
  12.             @Override  
  13.             public void onClick(View arg0) {  
  14.                 Intent n = new Intent(SetActivity.this, MainActivity.class);  
  15.                 startActivity(n);  
  16.             }  
  17.         });  
  18.     }  
  19. }  

注意MainActivity就是输入手势的页面

完整的项目稍后上传,不过结合上一篇应该也能自己补充完整,不妨自己先试试。

转载地址:https://blog.csdn.net/happy_love1990/article/details/72716878 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android网络请求心路历程
下一篇:Android判断屏幕锁屏的方法

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月24日 15时05分29秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

ewb交通灯报告和文件_基于ewb平台的交通灯电路设计.doc 2019-04-21
mysql中$使用_在MySQL中使用序列的简单教程 2019-04-21
mysql alter auto increment_将MySQL列更改为AUTO_INCREMENT 2019-04-21
mysql+err+1067_MySQL 5.7 Invalid default value for 'CREATE_TIME'报错的解决方法 2019-04-21
程序中mysql添加用户_MySQL添加用户的两种方法 2019-04-21
简述mysql安装过程_mysql安装的过程 2019-04-21
后端接口重定向_不用再等后端的接口啦!这个开源项目花 2 分钟就能模拟出后端接口... 2019-04-21
学mysql需要英语水平多高_大学英语专业挂科率高吗 2019-04-21
mysql group by实现_SQL数据分析之 group by 的实现原理 2019-04-21
mysql数据库大小如何查看器_如何用SQL命令查看Mysql数据库大小 2019-04-21
python 红黑树_红黑树-Python实现 | 学步园 2019-04-21
java string 日期格式_JAVA中String.format的用法 格式化字符串,格式化数字,日期时间格式化,... 2019-04-21
php显示json,使用 PHP 获取并解析 JSON 显示在页面中 2019-04-21
js php排序表格,javascript实现对表格元素进行排序操作_javascript技巧 2019-04-21
php sspi,php 内置的 web 服务器 php -s 2019-04-21
java生成结果集向量,如何解释H2o深度学习输出向量? 2019-04-21
matlab 曲线拟合求导,如何对matlab cftool拟合得到的cfit函数求导数 2019-04-21
matlab 50hzquchu,新手求消除50HZ工频干扰陷波滤波器源程序 2019-04-21
laravel没有route.php,Laravel中的RouteCollection.php中的NotFoundHttpException 2019-04-21
php服务端开启socket,php socket服务端能不能在网页端开启?而不是只能用CLI模式开启... 2019-04-21