• Android返回键


    感谢大佬:https://www.cnblogs.com/qiluboy/p/5308310.html

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

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

    back键默认把当前Activity给finish,home键只是把Activity给onStop.

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

    public void onBackPressed() {
                     // super.onBackPressed();这句话一定要注销,不然又去调用默认的back处理方式了
            Intent intent=new Intent();
            intent.putExtra("data_return", "相信自己");
            setResult(RESULT_OK, intent);
            
          }
    

    感谢大佬:https://blog.csdn.net/cl769796350/article/details/51595836

    补充:Android如何只显示一次启动页

    比如QQ,按返回键后再进入,就不会出现启动页,除非你把应用kill掉,或者后台清理掉。
    方法很简单,只要重写onBackPressed()方法:

    @Override
    public void onBackPressed() {
        //super.onBackPressed();//句话一定要注销,不然又去调用默认的back处理方式了
        //隐式意图-跳转主界面
        Intent intent = new Intent(Intent.ACTION_MAIN);
        //如果是不同应用,则创建新栈,反之不创建
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        
        intent.addCategory(Intent.CATEGORY_HOME);
        startActivity(intent);
    }
    

    多人使用startActivity时候,会碰到如下的异常:
    Caused by: Android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
    都知道,Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task(编者按:参见一.2.的编者按),遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是:Java代码中加一个flag,即intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)。这样就可以在新的task里面启动这个Activity了。

  • 相关阅读:
    C++ Boost 函数与回调应用
    C++ Boost库 操作字符串与正则
    C++ Boost库 实现命令行解析
    PHP 开发与代码审计(总结)
    c strncpy函数代码实现
    c strcat函数代码实现
    c strcpy函数代码实现
    c strlen函数代码实现
    Java-IO流-打印流
    Java-IO流-文件复制2
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621650.html
Copyright © 2020-2023  润新知