图像按钮问题。跳过 35 帧!应用程序可能在其主线程上做了太多工作

ImageButton issues. Skipped 35 frames! The application may be doing too much work on its main thread

我正在制作一个新的 post 因为我不知道如何解决我遇到的问题。我已经阅读了很多 posts 但我没有找到正确的解决方案。我只有一个 ImageButton,但出现错误 "Skipped 66 frames! The application ..."。我听说过 AsyncTask,但我不知道如何使用它,所以这就是我写这篇文章的原因 post。我看到了 AsyncTask 解决方案,但没有看到 ImageButton 的解决方案,所以我想获得一个 ImageButton 的示例来解决我的应用程序问题。 非常感谢。

public class MainActivity 扩展 AppCompatActivity {

ImageButton info;
Button playButton;
TextView title;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //FULLSCREEN
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_main);

    info = (ImageButton) findViewById(R.id.info);
    info.setBackgroundResource(R.drawable.info);
}

}

为避免在 UI 线程上执行此操作,您可以在 activity_main.xml 中设置后台资源。像这样:

<ImageButton
        android:id="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/info" />

您可以使用第三方库将大图像缓存并加载到您的视图中,而不是在主线程上执行。研究 Glide、Picasso 等人。例如,使用 Glide,您可以像这样异步加载图像:

Glide.with(this).load(imagePath).asBitmap().into(new SimpleTarget<Bitmap>(viewWidth, viewHeight) {
                    @Override
                    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                        Drawable drawable = new BitmapDrawable(resource);
                            yourImageButton.setBackground(drawable);
                    }
});

您应该检查并调整 "R.drawable.info" 图片的尺寸。