老师,学习完第三章遇到2个问题,想请老师解惑

来源:3-6 app定制Fragment导航器

Da丶

2020-02-25

问题1:反射获取Application对象

1.作为一种新的思路,获取Application,确实是一种拓展,但是使用反射获取ActivityThread,未来会不会触发Android 9.0 之后的反射限制。

2.在ActivityThread中,看到currentApplication()方法上面的注解

@UnsupportedAppUsage 

我觉得这种方式还是没有将Application-onCreate()作为静态变量保存,然后全局获取更好。

问题2:Demo在内存不足时,App被杀死,进行内容重启时,会闪退。

因为我刚开始进入课程学习阶段,解决起来,有点没有头绪,需要老师帮忙看一下

 Caused by: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class fragment
     Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class fragment
     Caused by: java.lang.IllegalStateException: Fragment com.mooc.libcommon.view.WindowInsetsNavHostFragment did not create a view.
        at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManagerImpl.java:3234)
        at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:134)
        at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:357)
        at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:336)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:784)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:867)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:519)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at com.mooc.ppjoke.MainActivity.onCreate(MainActivity.java:58)
        at android.app.Activity.performCreate(Activity.java:7101)
        at android.app.Activity.performCreate(Activity.java:7092)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2763)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2888)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1609)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6606)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:518)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:821)
写回答

1回答

LovelyChubby

2020-02-25

问题1:已经实验过了,再android 10上也没有触发反射检测。因为没有标记@hide注解

问题2:这个问题貌似是有的,官方的navigation demo  貌似也有这个问题,这个问题我在后台都看得到。在解。

0
1
Da丶
非常感谢!
2020-02-25
共1条回复

开发商业级热门短视频App 掌握Jetpack组件库

Jetpack架构大揭秘,全组件实战主流且功能完整的短视频App

1364 学习 · 607 问题

查看课程