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了。

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    TiFlash:并非另一个 T + 1 列存数据库
    单图说TDSQL;OceanBase 2.2 事务引擎核心功能;穿云箭2.0版发布;RMAN DUPLICATE配置19C DG;外键上有无索引的影响;MySQL8.0 索引新功能;GaussDB C
    tcpdump 看到 报文长度超过MSS
    TCP 最大段大小(Max Segment Size,MSS) 最大段大小
    Hack The Box——Traceback
    如何设置don't fragment (DF) flag 在socket上? (实际模拟路径 MTU 发现)
    MTU=1500 1460数据为什么要发2次?
    MTU=1500,单个报文段最大值为1448
    MTU 1500 发送1448数据
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621650.html
Copyright © 2011-2022 走看看