android - 计时器 Activity 错误

标签 android android-activity timer handler

我的 Activity 有一个计时器,它会改变 Activity 与另一个 Activity 在 AVD 上工作正常但在真实设备中我得到的错误是代码:

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
        final Intent mainIntent = new Intent(splash.this,MainActivity.class);
        splash.this.startActivity(mainIntent);
        splash.this.finish();
        }
        }, 5000);

这里是 logcat 输出:

01-14 21:16:39.146: E/AndroidRuntime(10899): FATAL EXCEPTION: main
01-14 21:16:39.146: E/AndroidRuntime(10899): java.lang.OutOfMemoryError
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.content.res.Resources.loadDrawable(Resources.java:2854)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.content.res.Resources.getDrawable(Resources.java:1521)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.ImageView.resolveUri(ImageView.java:628)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.ImageView.setImageResource(ImageView.java:361)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at com.safshari.mandegar.ImageAdapter.getView(ImageAdapter.java:70)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.AbsListView.obtainView(AbsListView.java:2597)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.GridView.makeAndAddView(GridView.java:1344)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.GridView.makeRow(GridView.java:344)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.GridView.fillDown(GridView.java:286)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.GridView.fillFromTop(GridView.java:420)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.GridView.layoutChildren(GridView.java:1232)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.AbsListView.onLayout(AbsListView.java:2431)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.view.View.layout(View.java:14482)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.view.ViewGroup.layout(ViewGroup.java:4469)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.view.View.layout(View.java:14482)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.view.ViewGroup.layout(ViewGroup.java:4469)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1669)
01-14 21:16:39.146: E/AndroidRuntime(10899):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1527)

如果需要信息,我的设备是 Galaxy s4。

这是我的图像适配器代码,应该在哪里输入 picasso 代码?

public class ImageAdapter extends BaseAdapter {
private Context mContext;

// Keep all Images in array
public Integer[] mThumbIds = {
        R.drawable.pic1,R.drawable.pic2,
        R.drawable.pic3,R.drawable.pic4,
        R.drawable.pic5,R.drawable.pic6,
        R.drawable.pic7,R.drawable.pic8,
        R.drawable.pic9,R.drawable.pic10,
        R.drawable.pic11,R.drawable.pic12,
        R.drawable.pic13,R.drawable.pic14,
        R.drawable.pic15,R.drawable.pic16,
        R.drawable.pic17,R.drawable.pic18,
        R.drawable.pic19,R.drawable.pic20,
        R.drawable.pic21,R.drawable.pic22,
        R.drawable.pic23,
        R.drawable.pic25,R.drawable.pic26,
        R.drawable.pic27,R.drawable.pic28,
        R.drawable.pic29,R.drawable.pic30,
        R.drawable.pic31,R.drawable.pic32,
        R.drawable.pic33,R.drawable.pic34,
        R.drawable.pic35,R.drawable.pic36,
        R.drawable.pic37,R.drawable.pic38,
        R.drawable.pic39,R.drawable.pic40,
        R.drawable.pic41,R.drawable.pic42,
        R.drawable.pic43,R.drawable.pic44,
        R.drawable.pic45,R.drawable.pic46,
        R.drawable.pic47,R.drawable.pic48,
        R.drawable.pic49,R.drawable.pic50,
        R.drawable.pic51,R.drawable.pic52,
        R.drawable.pic53,R.drawable.pic54,
        R.drawable.pic55


};

// Constructor
public ImageAdapter(Context c){
    mContext = c;
}

@Override
public int getCount() {
    return mThumbIds.length;
}

@Override
public Object getItem(int position) {
    return mThumbIds[position];
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {         
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
    imageView.setLayoutParams(new GridView.LayoutParams(250, 250));
    return imageView;
}

最佳答案

解决问题的最快方法是使用 Jake Wharton 的 Picasso 库。它可以在一行代码中加载图像并管理缓存、转换、下载等。

这是下载库的链接: http://square.github.io/picasso/

您需要的所有代码是:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);

将它放在您的网格适配器中,提供图像 URL 或可绘制对象或...并用您的图像持有者替换 imageView。

它应该像一个魅力:)

关于android - 计时器 Activity 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120704/

相关文章:

android - Android 应用程序中的 GSM 信号强度测量始终显示 0

android - 可以在 FloatingActionButton 中使用图像吗?

使用 PowerMock 进行 Android 仪器测试

java - 屏幕底部 float 横幅广告

c++ - 可移植库中的 timer_create 和 TimerQueueTimer 功能(如 boost)

android - 在 Actionscript 3 Android 中卸载 ByteArray

android - 来自 BroadcastReceiver 的调用通知

java - Android:闲置 X 分钟后重新打开应用程序?

python - 像gevent中的cron(计时器)

java - 允许 App Timer 在屏幕锁定时运行