美文网首页
2022-05-20 bug处理

2022-05-20 bug处理

作者: 霁逸lei | 来源:发表于2022-05-20 15:54 被阅读0次

换肤状态栏会先变成灰色、切换Activity出现黑屏(关闭系统切换动画)

 <!--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色-->
 <item name="android:statusBarColor">@android:color/transparent</item>

主题配置如下
<style name="ActivityStyle" parent="Theme.AppCompat.Light.NoActionBar">
<!--        <item name="android:windowIsTranslucent">true</item>-->
    <item name="android:windowBackground">@color/colorWhite</item>
    <item name="android:windowAnimationStyle">@style/Animation</item>
    <!--Android 5.x开始需要把颜色设置透明,否则导航栏会呈现系统默认的浅灰色-->
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

<style name="Animation">
    <item name="android:activityOpenEnterAnimation">@null</item>
    <item name="android:activityOpenExitAnimation">@null</item>
    <item name="android:activityCloseEnterAnimation">@null</item>
    <item name="android:activityCloseExitAnimation">@null</item>
    <item name="android:taskOpenEnterAnimation">@null</item>
    <item name="android:taskOpenExitAnimation">@null</item>
    <item name="android:taskCloseEnterAnimation">@null</item>
    <item name="android:taskCloseExitAnimation">@null</item>
    <item name="android:taskToFrontEnterAnimation">@null</item>
    <item name="android:taskToFrontExitAnimation">@null</item>
    <item name="android:taskToBackEnterAnimation">@null</item>
    <item name="android:taskToBackExitAnimation">@null</item>
</style>

Android崩溃后会重启activity,由于部分参数未初始化重复崩

public class CrashHandler implements UncaughtExceptionHandler  {
 @Override  
   public void uncaughtException(Thread thread, Throwable ex) {
            //发送消息通知情况Activity栈
            //销毁当前进程
            android.os.Process.killProcess(android.os.Process.myPid())
            System.exit(0)
    }
}
在开发过程中,想必你也一定遇到过这样的问题,当我们的应用发生Crash时异常退出,然后又自动启动跳转到未知页面,此时应用在崩溃前保存的全局变量被重置,用户状态丢失,显示数据错乱。更让我们头疼的是,这种崩溃后重启的情况,并不是每次都会遇到,那么究竟是因为什么呢?

经测试,在 Android 的 API 21 ( Android 5.0 ) 以下,Crash 会直接退出应用,但是在 API 21 ( Android 5.0 ) 以上,系统会遵循以下原则进行重启:

包含 Service,如果应用 Crash 的时候,运行着Service,那么系统会重新启动 Service。
不包含 Service,只有一个 Activity,那么系统不会重新启动该 Activity。
不包含 Service,但当前堆栈中存在两个 Activity:Act1 -> Act2,如果 Act2 发生了 Crash ,那么系统会重启 Act1。
不包含 Service,但是当前堆栈中存在三个 Activity:Act1 -> Act2 -> Act3,如果 Act3 崩溃,那么系统会重启 Act2,并且 Act1 依然存在,即可以从重启的 Act2 回到 Act1。
————————————————
版权声明:本文为CSDN博主「Juslt」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hnwx7880/article/details/85038057

关于加载fragment

implementation 'me.yokeyword:fragmentationx:1.0.2'  //停止维护慎用
1.当点击时加载对应fragment
loadRootFragment(R.id.mainFragment,mainFragment);
2.加载的fragment界面复杂卡顿时先加载空白页
start(tempFragment);
start(targetFragment);

记录TabLayout + ViewPager2 + fragment 消息通知跳转对应tab,tab切换成功,Viewpager对应的fragment是默认0

推测时序导致的跳转后createFragment position为0
方案一:设置初始选中状态加载
方案二:收到消息记录选中的Index,在onResume中切tab

        viewPager.setAdapter(new FragmentStateAdapter(this) {
            @NonNull
            @Override
            public Fragment createFragment(int position) {
                return fragmentList.get(position);
            }

            @Override
            public int getItemCount() {
                return fragmentList.size();
            }
        });
        TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(tabLayout, viewPager, true, true, new TabLayoutMediator.TabConfigurationStrategy() {
            @Override
            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
              
                }
            }
        });
        tabLayoutMediator.attach();
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
               
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
        tabLayout.selectTab(tabLayout.getTabAt(curNavIndex));


//方案二
public void onResume() {
        super.onResume();
        if (curNavIndex != tabLayout.getSelectedTabPosition()){
            tabLayout.selectTab(tabLayout.getTabAt(curNavIndex));
        }
    }

相关文章

  • 2022-05-20 bug处理

    换肤状态栏会先变成灰色、切换Activity出现黑屏(关闭系统切换动画) Android崩溃后会重启activit...

  • 2022-05-20

    2022-05-20

  • iOS-收藏文章

    Bug处理: BUG:The 'Apple Developer Program License Agreement...

  • 2019-12-29_项目维护和开发的基本思考

    1. bug处理 bug代码细节-常见异常归纳处理; bug排查和复现,定位问题的方式方法总结; 2. 系统的熟悉...

  • Q&A 树形中的bug

    待处理的bug

  • bug的处理

    公司与别的公司一起合作开发一个车联网项目,主要有车道偏离视频传感器,通讯网关,无线驱动,方向盘电机震动组成。...

  • :bug: Symphony(引起||处理)Bug日志

    由于几乎每次贡献代码,都能引起点儿bug出来,让我深感惭愧,故觉有必要做一下记录,避免日后重复掉坑。给D大添麻烦真...

  • Python基础-14异常处理

    14.异常处理     只要是人编写的代码,或多或少都会存在一些Bug,当这些Bug被程序捕捉之后,需要怎么处理,...

  • 项目文档-测试复盘

    月度版本发布情况 月度新增BUG类型统计 月度外场BUG分布 月度处理问题结果分布 月度处理问题类型分布 月度分支...

  • 2017年02月23号

    昨天上的补丁交叉检查没做好!今天处理了几个问题还差保存的,还有还款单的bug以及bug系统的bug.

网友评论

      本文标题:2022-05-20 bug处理

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