zoukankan      html  css  js  c++  java
  • 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++出现 error: no match for 'operator==' (operand types are 'Person' and 'const Person')
    python三元运算符公式/出错怎么看
    我学函数遗漏的东西
    学习函数时一些没注意到的地方
    Python文件操作回顾
    我学习python没有记住的东西
    转载
    UE SC -kismetmathlibrary
    LineTrace跟Overlap开销
    UE4 插件无法读取常见错误
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621650.html
Copyright © 2011-2022 走看看