android - 布局加载缓慢

标签 android performance android-layout android-ui slidingmenu

我有一个在图书馆的父类(super class)。这个库负责初始化一些基本的布局组件和其他东西。我的问题是加载布局需要 1.x 秒,并在设置子指定布局之前显示默认布局一段时间。

这是我父类(super class)的方法:

public void InitializeWindow(Activity act, int layoutResourceId, String windowTitle,
        Object menuAdapter, int slideMenuMode) {
    super.setContentView(layoutResourceId);
    super.setBehindContentView(R.layout.menu_frame);
    this.menuAdapter = menuAdapter; 
    this.slideMenuMode = slideMenuMode;
    setWindowTitle(windowTitle);
    initializeSlidingMenu();
}

这样调用:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.InitializeWindow(this, R.layout.activity_home, "\t\tHome",
            new MenuAdapter(this, R.menu.slide_menu), SlidingMenu.TOUCHMODE_FULLSCREEN);    
}

该应用程序运行起来非常棒,但正如我所说,它需要大约 1.x 秒来加载从子类传递的布局。为什么会这样?

应要求,这是我的 initializeSlideMenu() 方法:

public void initializeSlidingMenu() {
    this.setSlidingActionBarEnabled(true);
    getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width);
    getSlidingMenu().setShadowWidthRes(R.dimen.shadow_width);
    getSlidingMenu().setShadowDrawable(R.drawable.shadow);
    getSlidingMenu().setTouchModeAbove(slideMenuMode);
    getSlidingMenu().setBehindScrollScale(0.25f);

    ListView v = new ListView(this);
    v.setBackgroundColor(Color.parseColor("#000000"));
    v.setAdapter((ListAdapter) menuAdapter);
    getSlidingMenu().setMenu(v);
}

最佳答案

为了避免此类问题,一般有以下三种方法。

  1. 让 onCreate() 在 setContentView() 调用之后尽早完成。您可以使用 postDelayed runnable 来延迟一些在早期阶段可能不需要的初始化。

  2. 当 View 就绪时执行一些任务,它会导致将 Runnable 添加到该 View 的消息队列中。

fragment

view.post(new Runnable() {

        @Override
        public void run() {

        }
    });

如果以上都没有帮助,请考虑“使用 stub 优化”链接:http://android-developers.blogspot.in/2009/03/android-layout-tricks-3-optimize-with.html

希望对您有所帮助。

关于android - 布局加载缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15334051/

相关文章:

java - Android SQLiteException 语法错误

java - 优化大容量日志文件的 Java 文件 I/O

java - HashMap 通过 2 种不同的方法进行操作 - 多线程和并发

android - 如何在屏幕上显示确切数量的 ListView 项目?

java - 使用支持包中的 fragment 创建选项卡栏

android - 如何测试 viewModelScope 控制的 SharedFlow?

java - 以编程方式设置 imageview 前景渐变颜色

android - Android 4.2 之前的 mipmap 启动器图标的使用?

python - python 游戏中的房间/屏幕/菜单 Controller 问题 : old rooms are not removed from memory

android - 将图像对齐到另一个图像的中心