android手势解锁-------后台恢复到前台就启动手势解锁

原文地址: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]  view plain  copy
  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]  view plain  copy
  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就是输入手势的页面

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值