美文网首页Android 问题杂记
Android onActivityResult()和onRes

Android onActivityResult()和onRes

作者: 会撒娇的犀犀利 | 来源:发表于2018-07-16 14:03 被阅读479次

    问题回顾:

    在Android8.0手机上不能直接安装Apk,需要权限申请,回调后执行onActivityResult()方法,并弹出对应的dialog,这时需要判断当前Activity是否处于resume状态,通过变量来控制,但结果是这个dialog并不会弹出。

    问题本质

    Activity跳转到系统应用后回调onActivityResult() 先执行还是onResume()先执行?

    查看源码

     /**
         * Called when an activity you launched exits, giving you the requestCode
         * you started it with, the resultCode it returned, and any additional
         * data from it.  The <var>resultCode</var> will be
         * {@link #RESULT_CANCELED} if the activity explicitly returned that,
         * didn't return any result, or crashed during its operation.
         *
         * <p>You will receive this call immediately before onResume() when your
         * activity is re-starting.
         *
         * <p>This method is never invoked if your activity sets
         * {@link android.R.styleable#AndroidManifestActivity_noHistory noHistory} to
         * <code>true</code>.
         *
         * @param requestCode The integer request code originally supplied to
         *                    startActivityForResult(), allowing you to identify who this
         *                    result came from.
         * @param resultCode The integer result code returned by the child activity
         *                   through its setResult().
         * @param data An Intent, which can return result data to the caller
         *               (various data can be attached to Intent "extras").
         *
         * @see #startActivityForResult
         * @see #createPendingResult
         * @see #setResult(int)
         */
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        }
    
    

    onActivityResult()注释中有这么一句话:

    You will receive this call immediately before onResume() when your activity is re-starting.

    (意思是说当你的Activity重新启动时 onActivityResult() 会在onResume()之前执行)

    很显然,如果你的Activity 调用了 startActivityForResult() 方法启动,回调之后会先执行 onActivityResult() ,然后执行onResume()

    相关文章

      网友评论

        本文标题:Android onActivityResult()和onRes

        本文链接:https://www.haomeiwen.com/subject/ifqbpftx.html