安卓back键_安卓 back键 - CSDN
  • Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法...

    Back键
    Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了.如果说程序中存在service之类的,则可以在恰当的位置监听处理下也就可以了.

                 
    Home键
    Android程序的隐藏,当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity.

           

            

    实现按Home键时隐藏程序的效果:
    1:Android 2.0之前需要监听按键事件,进行判断是不是按下了back键
    2:Android 2.0之后系统提供了一个onBackPressed()方法,这个方法就是专门用来监听back键事件的,所以只需重写onBackPressed()方法即可

    @Override
    public void onBackPressed() {
        //实现Home键效果
        //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了
        Intent i= new Intent(Intent.ACTION_MAIN);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        i.addCategory(Intent.CATEGORY_HOME);
        startActivity(i); 
    }

              

    退出应用程序的实现:可以自己写个方法,例如:

    public void exitProgrames(){
        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
        android.os.Process.killProcess(android.os.Process.myPid());
    }
    注意:需要添加权限:<uses-permission android:name="android.permission.RESTART_PACKAGES" />
    展开全文
  • Androidback键是使activity destroy消灭Android的home键是让Activity onStop,在后台执行back键也有例外的,按back键不会关闭Activity的,比如播放音乐,按了back键之后仍可以继续播放音乐。这是因为Service没有...

    Android的back键是使activity destroy消灭

    Android的home键是让Activity onStop,在后台执行

    back键也有例外的,按back键不会关闭Activity的,比如播放音乐,按了back键之后仍可以继续播放音乐。

    这是因为Service没有停止,所以音乐一直在后台执行。

    展开全文
  • 根据文档,安卓back键的处理主要就是一个事件监听:http://reactnative.cn/post/480 BackAndroid.addEventListener('hardwareBackPress', this.onBackPressed); BackAndroid.removeEventListener('...

    基本用法

    根据文档,安卓back键的处理主要就是一个事件监听:http://reactnative.cn/post/480

    BackAndroid.addEventListener('hardwareBackPress', this.onBackPressed);
    BackAndroid.removeEventListener('hardwareBackPress', this.onBackPressed);
    

    starter-kit里,我们在App这一级别,实现了按back键回退导航栈的功能:

    class App extends React.Component {
      componentWillMount() {
        if (Platform.OS === 'android') {
          BackAndroid.addEventListener('hardwareBackPress', this.onBackAndroid);
        }
      }
      componentWillUnmount() {
        if (Platform.OS === 'android') {
          BackAndroid.removeEventListener('hardwareBackPress', this.onBackAndroid);
        }
      }
      onBackAndroid = () => {
        const nav = this.navigator;
        const routers = nav.getCurrentRoutes();
        if (routers.length > 1) {
          nav.pop();
          return true;
        }
        return false;
      };
      ……
    }
    

    注意这里为了方便后续removeEventListener,采用了用绑定this的函数属性的方法来创建回调函数,而非箭头函数或者bind(this),这一点参考之前的博文

    代码中,当componentWillMount的时候挂接事件。对于应用根组件来说,这个生命周期就基本和我们应用的生命周期一致了。当back键被按下的时候,首先检查当前的导航栈,如果多余一个页面,则退回顶部的页面。

    说明:BackAndroid在iOS平台下是一个空实现,所以理论上不做这个Platform.OS === 'android'判断也是安全的。

    使用默认行为/退出应用

    back键的默认行为就是退出应用了。我们通常需要判断某些条件,并最后决定是否要退出应用。上文中的例子就使用了第一种调用默认行为的方法:

    如果所有事件监听函数中,没有任何一个返回真值,就会默认调用默认行为

    如果你只挂接了一个监听函数,那么你的返回值就决定了是否要调用默认行为:true为不调用,false为调用

    在上文代码中,我们如果导航栈多于一个页面,就不调用默认行为,而如果只有一个页面,则调用默认界面。

    例子:“再按一次退出应用”

    常有这种需求:按下back键以后,弹出一个toast,然后在一定时间内再按一次,才退出应用。这个代码就可以这样写:

      onBackAndroid = () => {
        if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
          //最近2秒内按过back键,可以退出应用。
          return false;
        }
        this.lastBackPressed = Date.now();
        ToastAndroid.show('再按一次退出应用');
        return true;
      };
    

    还有一种情况,我们在监听函数中不能决定是否要调用默认行为,要等待一个异步操作之后才调用默认行为,此时可以通过第二种办法:

    使用BackAndroid.exitApp()来退出应用。

    例子:在退出应用之前保存数据

    写法1:

      onBackAndroid = () =>{
        saveData().then(()=>{
          BackAndroid.exitApp();
        });
        return true;
      }
    

    在监听函数中,我们开始异步事件,并直接return true。此时默认行为不会被调用。当保存完毕后,我们调用exitApp(),触发默认行为,退出应用。

    写法2:

      onBackAndroid = async () =>{
        await saveData();
        BackAndroid.exitApp();
      }
    

    这里我们用了async函数,async 函数总是返回一个Promise,Promise作为一个对象,也被认为是一个“真值”,所以这种情况下默认行为总是不会被调用。当保存完毕后,我们调用exitApp(),触发默认行为,退出应用。

    根据当前界面决定作何动作

    有时候我们有这样的需求:当用户处于某些界面下时,back键要做特殊的动作,如:提示用户是否要保存数据,或者解锁界面禁止back键返回等等。此时,最佳实践是在route或route中对应的Component上保存关于如何处理back键的信息:

      onBackAndroid = () => {
        const nav = this.navigator;
        const routers = nav.getCurrentRoutes();
        if (routers.length > 1) {
          const top = routers[routers.length - 1];
          if (top.ignoreBack || top.component.ignoreBack){
            // 路由或组件上决定这个界面忽略back键
            return true;
          }
          const handleBack = top.handleBack || top.component.handleBack;
          if (handleBack) {
            // 路由或组件上决定这个界面自行处理back键
            return handleBack();
          }
          // 默认行为: 退出当前界面。
          nav.pop();
          return true;
        }
        return false;
      };
    展开全文
  • back键Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()...

    back键
    Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来销毁当前Activity,当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了.如果说程序中存在service之类的,则可以在恰当的位置监听处理下也就可以了.              

    home键
    Android程序的隐藏,当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity.

    实现按Home键时隐藏程序的效果:
    1:Android 2.0之前需要监听按键事件,进行判断是不是按下了back键
    2:Android 2.0之后系统提供了一个onBackPressed()方法,这个方法就是专门用来监听back键事件的,所以只需重写onBackPressed()方法即可

    @Override
    public void onBackPressed() { 
        //实现Home键效果 
        //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了 
        Intent i= new Intent(Intent.ACTION_MAIN); 
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        i.addCategory(Intent.CATEGORY_HOME); 
        startActivity(i);  
    }

    退出应用程序的实现:可以自己写个方法,例如:

    public void exitProgrames(){ 
        Intent startMain = new Intent(Intent.ACTION_MAIN); 
        startMain.addCategory(Intent.CATEGORY_HOME); 
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(startMain); 
        android.os.Process.killProcess(android.os.Process.myPid()); 
    }

    转载自:http://www.cnblogs.com/linjiqin/archive/2011/12/14/2287968.html

    展开全文
  • android中的back键处理

    2019-07-06 15:23:22
    Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。 1.直接获取按钮按下事件,此方法兼容Android 1.0到Android ...

    Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。

      1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
           //增加自己的处理逻辑
           Toast.makeText(TestBackActivity.this,"监听系统返回键",
           Toast.LENGTH_LONG).show();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }        

    2、重写onBackPressed方法

     而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下:

    @Override
    public void onBackPressed() {
     //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了
    // 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
    
    }

    eg:双击退出应用程序:

     /**
       * 返回键两次点击,第一次点击的时间
       */
       private long exitTime = 0;
      @Override
      public void onBackPressed() {
           //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了
           // 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
                if ((System.currentTimeMillis() - exitTime) > 2000) {
                    Toast.makeText(getApplicationContext(), "再按一次退出程序",
                            Toast.LENGTH_SHORT).show();
                    exitTime = System.currentTimeMillis();
                } else {
                    finish();
                }
    }

     

    转载于:https://www.cnblogs.com/butterfly-clover/p/4428168.html

    展开全文
  • 在开发中 有时候会模拟Home和Back键 ,认真学习了源码终于找到了相关代码,代码如下: Home键: Intent intent = new Intent(Intent.ACTION_MAIN); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addCate....
  • 转自文章《Android Back Home监听》... 对于Back键的监听比较容易,可以在多个系统回调处拦截,比如在activity的下列方法中都可以收到Back键按下的事件: @Override public void onBackPressed
  • 在一个Activity中,按back按键,程序会调用onPause函数,有时间不希望调用这个函数,可以重载onKeyDown,检测到是KEYCODE_BACK时,直接返回,则系统就不在调用onPause函数,自己的消息处理函数放在onKeyUp函数中处理
  • Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来,销毁当前Activity。当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法...
  • Android BACK 按键事件

    2020-01-10 09:38:37
    Android BACK键简析BACK BACK 最近在有AndroidTV的项目需求,在学习按键处理过程中,我发现对于返回键也有不同的解决方案。在一般情况下,不对BACK按键做处理,BACK就是维护简单的回退栈,退到上一个Activity。但是...
  • 助力快速通过 Unity 获取安卓 Android 手机上的主页、返回 Unity获取安卓键位 Unity获取Android安卓主页HomeBack返回 Home、Back ——主页、返回 Unity 中通过代码获取 Android 端主页、返回
  • Android Back键监听

    2016-07-28 11:44:26
    * 监听Back键按下事件,方法1:  * 注意:  * super.onBackPressed()会自动调用finish()方法,关闭  * 当前Activity.  * 若要屏蔽Back键盘,注释该行代码即可  */  @Override  public void onBackPressed()...
  • MainActivity如下: ... import android.os.Bundle; import android.view.KeyEvent; import android.app.Activity; ... * 处理Back键按下事件 * * 注意事项: * 以下两种方法勿一起使用 */ public
  • Android back键初探

    2017-08-22 17:42:48
    back键后会调用onBackPressed()【低版本调用onKeyDown()】,默认实现是调用finish(),finish()方法又会去调用OnDestroy(),栈顶Activity就被销毁,所以会回调Activity的OnDestroy();而按home键是把整个任务栈挂起...
  • 实现这种功能就需要去监听系统的按键操作,最常用的就是监听Back键、Home键和多任务键。 但是Android系统默认是不让代码监听,所以我们就得想别的办法,这里是通过广播监听日志log! 设置窗体属性 首先,在...
  • android back键处理

    2016-08-09 14:00:25
    首先重写该方法,拦截KeyEvent.KEYCODE_BACK 。public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (!mRechargeFragment.onBackPressed()) { retu
  • 首先,来看一下关于Android home键和back键区别 back键 Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来,销毁当前Activity。当此Activity又...
  • package com.example.keyevent; import android.os.Bundle; import android.view.KeyEvent; import android.app.Activity; /** * Demo描述: * 处理Back键按下事件 * * 注意事项: * 以下两...
  • 很多网友不明白如何在Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。...
1 2 3 4 5 ... 20
收藏数 42,624
精华内容 17,049
关键字:

安卓back键