使用毕加索内凌空是给我一个坏的帧速率,并撞毁我的应用程序 [英] Using Picasso inside Volley is giving me a bad frame-rate and crashing my app

查看:1267
本文介绍了使用毕加索内凌空是给我一个坏的帧速率,并撞毁我的应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为了使长话短说,我使用的是毕加索排球的 onResponse()方法内填充与图像的列表视图。

在code是工作,但我得到一个坏帧速率,而应用程序是没有内存崩溃,如果我通过列表视图太快滚动。

在哪里糟糕表现是从哪里来的?我想异步的东西会照顾一切。

毕加索和截击的工作只是找到我之前,他们坚持每个 - 其他的内部。

我想问题可能是我坚持的另一个异步类中的异步类。这也许解释了线程错误,我得到如所有线程了

下面是我如何使用毕加索内凌空:

 请求队列请求队列= Volley.newRequestQueue(CTX1);    JsonObjectRequest jsonObjectRequest =新JsonObjectRequest(网址,新Response.Listener<&JSONObject的GT;(){
        @覆盖
        公共无效onResponse(JSONObject的响应){            //如果有响应,这样做
            如果(响应!= NULL){                // JSON获取对象数量的网页上
                INT = RESULTCOUNT response.optInt(RESULTCOUNT个);                //如果在网页上的JSON对象,这样做
                如果(RESULTCOUNT大于0){                    //获取GSON对象
                    GSON GSON =新GSON();                    //从结果获取JSONArray
                    JSONArray jsonArray = response.optJSONArray(结果);                    //如果数组存在,这样做
                    如果(jsonArray!= NULL){                        JSONObjectsList = gson.fromJson(jsonArray.toString(),SongInfo []类);                        Picasso.with(ctx2)
                                .load(将String.valueOf(JSONObjectsList [0] .artworkUrl30))
                                .transform(新CircleTransform())
                                .placeholder(R.drawable.blackcircle)
                                .into(四);
                    }
                }
            }
        }
    },新Response.ErrorListener(){
        @覆盖
        公共无效onErrorResponse(VolleyError错误){
            Log.e(日志,error.toString());
        }
    });    requestQueue.add(jsonObjectRequest);
}

错误日志的最后一位。

  1月11日至27日:25:21.482 32167-32182 / I /艺术:背景粘并发标记扫描GC释放157894(7MB)AllocSpace对象,62(5MB)LOS对象,9 %免费,63MB / 69MB,暂停9.954ms总196.412ms
1月11日至27日:25:21.502 32167-32167 / D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
1月11日至27日:25:21.602 32167-32182 / W /艺术:暂停所有线程了:8.316ms
1月11日至27日:25:21.662 32167-32182 / I /艺术:背景部分并发标记扫描GC释放160421(7MB)AllocSpace对象,36(3MB)LOS对象,22%免费,55MB / 71MB,暂停16.171ms共156.768女士
1月11日至27日:25:21.672 32167-32182 / W /艺术:暂停所有线程了:5.037ms
1月11日至27日:25:21.712 32167-32174 / W /艺术:暂停所有线程了:36.212ms
1月11日至27日:25:21.732 32167-32182 / I /艺术:背景粘并发标记扫描GC释放6365(305KB)AllocSpace对象,6(372KB)LOS对象,12%免费,55MB / 63MB,暂停11.009ms总55.466女士
1月11日至27日:25:21.772 32167-32167 / D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
1月11日至27日:25:21.862 32167-32167 / D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
1月11日至27日:25:22.062 32167-32167 / D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
1月11日至27日:25:22.102 32167-32182 / I /艺术:背景部分并发标记扫描GC释放134151(6MB)AllocSpace对象,47(4MB)LOS对象,22%免费,55MB / 71MB,暂停11.466ms共128.496女士
1月11日至27日:25:22.362 32167-32167 / D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
1月11日至27日:25:22.652 32167-32182 / I /艺术:背景粘并发标记扫描GC释放171943(7MB)AllocSpace对象,86(7MB)LOS对象,11%免费,59MB / 67MB,暂停6.646ms总90.801女士
1月11日至27日:25:22.662 32167-32167 / D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
1月11日至27日:25:22.712 32167-32174 / W /艺术:暂停所有线程了:33.982ms
1月11日至27日:25:22.742 32167-32182 / I /艺术:背景部分并发标记扫描GC释放124437(6MB)AllocSpace对象,24(2MB)LOS对象,23%免费,52MB / 68MB,暂停12.255ms总87.884女士
1月11日至27日:25:22.932 32167-32167 / D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
1月11日至27日:25:23.192 32167-32167 / D / ViewRootImpl:ViewPostImeInputStage ACTION_DOWN
1月11日至27日:25:23.192 32167-32167 / I /编舞:跳过127帧!该应用程序可能会做它的主线程的工作太多了。
1月11日至27日:25:23.342 32167-32182 / I /艺术:背景粘并发标记扫描GC释放152008(7MB)AllocSpace对象,69(6MB)LOS对象,12%免费,57MB / 65MB,暂停11.857ms共124.020女士
1月11日至27日:25:23.702 32167-32174 / W /艺术:暂停所有线程了:29.615ms
1月11日至27日:25:23.772 32167-32182 / I /艺术:背景部分并发标记扫描GC释放165355(7MB)AllocSpace对象,26(3MB)LOS对象,21%免费,56MB / 72MB,暂停10.798ms共159.423女士
1月11日至27日:25:23.852 32167-32182 / I /艺术:背景粘并发标记扫描GC释放16824(674KB)AllocSpace对象,1(150KB)LOS对象,12%免费,57MB / 65MB,暂停7.395ms总66.835女士
1月11日至27日:25:24.182 32167-32174 / W /艺术:暂停所有线程了:10.983ms
1月11日至27日:25:24.562 32167-32182 / I /艺术:背景部分并发标记扫描GC释放60495(2MB)AllocSpace对象,15(2MB)LOS对象,20%免费,62MB / 78MB,暂停12.542ms共196.419女士
1月11日至27日:25:24.632 32167-32182 / I /艺术:背景粘并发标记扫描GC释放6414(236KB)AllocSpace对象,0(0B)LOS对象,11%免费,63MB / 71MB,暂停10.624ms总67.043女士
1月11日至27日:25:24.932 32167-32167 / W / libc中:pthread_create的失败:无法分配1064960字节堆栈:内存不足
1月11日至27日:25:24.932 32167-32167 / E /艺术:投掷的OutOfMemoryError在pthread_create(1040KB堆栈)失败:重试
1月11日至27日:25:24.932 32167-32167 / D / AndroidRuntime:关闭VM
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:致命异常:主要
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:工艺:,PID:32167
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:java.lang.OutOfMemoryError:在pthread_create(1040KB堆栈)失败:再试一次
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在java.lang.Thread.nativeCreate(本机方法)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在java.lang.Thread.start(Thread.java:1063)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在com.android.volley.RequestQueue.start(RequestQueue.java:145)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:79)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:105)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:115)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在.ServiceHandler.runVolley(ServiceHandler.java:41)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在.MyListAdapterTracks.getView(MyListAdapterTracks.java:119)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.widget.AbsListView.obtainView(AbsListView.java:2825)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.widget.ListView.makeAndAddView(ListView.java:1884)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.widget.ListView.fillDown(ListView.java:713)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.widget.ListView.fillGap(ListView.java:677)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.widget.AbsListView.trackMotionScroll(AbsListView.java:7043)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.widget.AbsListView $ FlingRunnable.run(AbsListView.java:6481)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:777)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.view.Choreographer.doCallbacks(Choreographer.java:590)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.view.Choreographer.doFrame(Choreographer.java:559)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:763)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.os.Handler.handleCallback(Handler.java:739)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.os.Handler.dispatchMessage(Handler.java:95)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.os.Looper.loop(Looper.java:145)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在android.app.ActivityThread.main(ActivityThread.java:5944)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在java.lang.reflect.Method.invoke(本机方法)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在java.lang.reflect.Method.invoke(Method.java:372)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1399)
1月11日至27日:25:24.932 32167-32167 / E / AndroidRuntime:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
1月11日至27日:25:25.062 32167-2055 / A / libc中:致命的信号11(SIGSEGV),code 1,在TID故障地址为0x0 2055(螺纹8342)


解决方案

您可以看到(的链接)的最好成绩图像加载库,直到日期 毕加索 滑翔 .The教程涵盖内存用途,质量等所有你想了解这两个库的事。
因此,通过将TUTS后,你明白了吧毕加索使用时调整大小相当摆脱内存问题去掉。

请使用调整()飞度()与毕加索

  Picasso.with(本)
        .load(http://nuuneoi.com/uploads/source/playstore/cover.jpg)
        .resize(100,100)//拟合()
        .into(ivImgPicasso);

To make a long story short, I'm using Picasso inside Volley's onResponse() method to populate a listview with images.

The code is working, but I'm getting a bad frame-rate, and the app is crashing with no memory if I scroll through the list view too quickly.

Where is the bad performance coming from? I thought the asynchronous stuff would take care of everything.

Picasso and Volley work just find until I stick them inside of each-other.

I think the problem might be that I'm sticking an asynchronous class inside another asynchronous class. Maybe this explains the threading errors I get e.g. all threads took?

Here is how I use Picasso inside Volley:

RequestQueue requestQueue = Volley.newRequestQueue(ctx1);

    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {

            // If there is a response, do this
            if (response != null) {

                // Get the number of JSON objects on the web-page
                int resultCount = response.optInt("resultCount");

                // If there is a JSON object on the web-page, do this
                if (resultCount > 0) {

                    // Get a gson object
                    Gson gson = new Gson();

                    // Get a JSONArray from the results
                    JSONArray jsonArray = response.optJSONArray("results");

                    // If the array exists, do this
                    if (jsonArray != null) {

                        JSONObjectsList = gson.fromJson(jsonArray.toString(), SongInfo[].class);

                        Picasso.with(ctx2)
                                .load(String.valueOf(JSONObjectsList[0].artworkUrl30))
                                .transform(new CircleTransform())
                                .placeholder(R.drawable.blackcircle)
                                .into(iv);
                    }
                }
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("LOG", error.toString());
        }
    });

    requestQueue.add(jsonObjectRequest);
}

The last bit of the error log

11-27 01:25:21.482 32167-32182/ I/art: Background sticky concurrent mark sweep GC freed 157894(7MB) AllocSpace objects, 62(5MB) LOS objects, 9% free, 63MB/69MB, paused 9.954ms total 196.412ms
11-27 01:25:21.502 32167-32167/ D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-27 01:25:21.602 32167-32182/ W/art: Suspending all threads took: 8.316ms
11-27 01:25:21.662 32167-32182/ I/art: Background partial concurrent mark sweep GC freed 160421(7MB) AllocSpace objects, 36(3MB) LOS objects, 22% free, 55MB/71MB, paused 16.171ms total 156.768ms
11-27 01:25:21.672 32167-32182/ W/art: Suspending all threads took: 5.037ms
11-27 01:25:21.712 32167-32174/ W/art: Suspending all threads took: 36.212ms
11-27 01:25:21.732 32167-32182/ I/art: Background sticky concurrent mark sweep GC freed 6365(305KB) AllocSpace objects, 6(372KB) LOS objects, 12% free, 55MB/63MB, paused 11.009ms total 55.466ms
11-27 01:25:21.772 32167-32167/ D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-27 01:25:21.862 32167-32167/ D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-27 01:25:22.062 32167-32167/ D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-27 01:25:22.102 32167-32182/ I/art: Background partial concurrent mark sweep GC freed 134151(6MB) AllocSpace objects, 47(4MB) LOS objects, 22% free, 55MB/71MB, paused 11.466ms total 128.496ms
11-27 01:25:22.362 32167-32167/ D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-27 01:25:22.652 32167-32182/ I/art: Background sticky concurrent mark sweep GC freed 171943(7MB) AllocSpace objects, 86(7MB) LOS objects, 11% free, 59MB/67MB, paused 6.646ms total 90.801ms
11-27 01:25:22.662 32167-32167/ D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-27 01:25:22.712 32167-32174/ W/art: Suspending all threads took: 33.982ms
11-27 01:25:22.742 32167-32182/ I/art: Background partial concurrent mark sweep GC freed 124437(6MB) AllocSpace objects, 24(2MB) LOS objects, 23% free, 52MB/68MB, paused 12.255ms total 87.884ms
11-27 01:25:22.932 32167-32167/ D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-27 01:25:23.192 32167-32167/ D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN
11-27 01:25:23.192 32167-32167/ I/Choreographer: Skipped 127 frames!  The application may be doing too much work on its main thread.
11-27 01:25:23.342 32167-32182/ I/art: Background sticky concurrent mark sweep GC freed 152008(7MB) AllocSpace objects, 69(6MB) LOS objects, 12% free, 57MB/65MB, paused 11.857ms total 124.020ms
11-27 01:25:23.702 32167-32174/ W/art: Suspending all threads took: 29.615ms
11-27 01:25:23.772 32167-32182/ I/art: Background partial concurrent mark sweep GC freed 165355(7MB) AllocSpace objects, 26(3MB) LOS objects, 21% free, 56MB/72MB, paused 10.798ms total 159.423ms
11-27 01:25:23.852 32167-32182/ I/art: Background sticky concurrent mark sweep GC freed 16824(674KB) AllocSpace objects, 1(150KB) LOS objects, 12% free, 57MB/65MB, paused 7.395ms total 66.835ms
11-27 01:25:24.182 32167-32174/ W/art: Suspending all threads took: 10.983ms
11-27 01:25:24.562 32167-32182/ I/art: Background partial concurrent mark sweep GC freed 60495(2MB) AllocSpace objects, 15(2MB) LOS objects, 20% free, 62MB/78MB, paused 12.542ms total 196.419ms
11-27 01:25:24.632 32167-32182/ I/art: Background sticky concurrent mark sweep GC freed 6414(236KB) AllocSpace objects, 0(0B) LOS objects, 11% free, 63MB/71MB, paused 10.624ms total 67.043ms
11-27 01:25:24.932 32167-32167/ W/libc: pthread_create failed: couldn't allocate 1064960-byte stack: Out of memory
11-27 01:25:24.932 32167-32167/ E/art: Throwing OutOfMemoryError "pthread_create (1040KB stack) failed: Try again"
11-27 01:25:24.932 32167-32167/ D/AndroidRuntime: Shutting down VM
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime: FATAL EXCEPTION: main
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime: Process: , PID: 32167
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime: java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at java.lang.Thread.nativeCreate(Native Method)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at java.lang.Thread.start(Thread.java:1063)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at com.android.volley.RequestQueue.start(RequestQueue.java:145)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:79)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:105)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at com.android.volley.toolbox.Volley.newRequestQueue(Volley.java:115)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at .ServiceHandler.runVolley(ServiceHandler.java:41)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at .MyListAdapterTracks.getView(MyListAdapterTracks.java:119)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.widget.AbsListView.obtainView(AbsListView.java:2825)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.widget.ListView.makeAndAddView(ListView.java:1884)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.widget.ListView.fillDown(ListView.java:713)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.widget.ListView.fillGap(ListView.java:677)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.widget.AbsListView.trackMotionScroll(AbsListView.java:7043)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:6481)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.view.Choreographer.doCallbacks(Choreographer.java:590)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.view.Choreographer.doFrame(Choreographer.java:559)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:145)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5944)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
11-27 01:25:24.932 32167-32167/ E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
11-27 01:25:25.062 32167-2055/ A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 2055 (Thread-8342)

解决方案

You can see( Link ) the comparison between the bests image loading libraries till date Picasso and Glide.The tutorial covers memory usages,quality etc all the things you want to know about both the libraries. So, after going through the tuts you get the point when using picasso resizing is considerable to get rid from memory issues.

Use Either resize() or fit() with picasso

 Picasso.with(this)
        .load("http://nuuneoi.com/uploads/source/playstore/cover.jpg")
        .resize(100, 100)//fit()
        .into(ivImgPicasso);

这篇关于使用毕加索内凌空是给我一个坏的帧速率,并撞毁我的应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆