마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

addview 성능 질문 있습니다

–1 추천
구조 를 설명해드리겟습니다.

프레임으로4개의 탭을 만들었습니다.

그리고 각탭을 누를때마다 데이터를 가저와 그 갯수만큼 addview를 동작 시키는데요 addview시 느리다는것이 발견되었습니다. 그리고 또하나 각각의 탭을 이동할때 3번정도 이동하면 Activity가 자동으로 꺼지는 현상이 있습니다. 하지만 아무런 로그가 찍이지 않습니다.

현재 처리해놓은 부분은 각탭을 누를때마다 removeAllViews를 처리하였습니다.

성능이나 Activity가 종료되는 부분을 어떻게 처리해야할까요..
왈라뽕다 (1,170 포인트) 님이 2013년 6월 13일 질문

1개의 답변

0 추천

데이터를 가저와 그 갯수만큼 addview를 동작 시키는 <- data가 몇개쯤인가요?

data가 많으면   화면에 보이는 view만 만들고 data를 바꿔서 셋팅하세요.

addview,removeview 속도는 상당히 빠른데 많이 붙이면 느려집니다. view의 이벤트 플로우를 생각해보면 어처구니 없이 많은 view가 붙으면 느려지는건 당연하겠죠.

그리고 해당 view에 님이 구현한 코드가  해당 view내에서 시간을 잡아 먹는거일수도 있습니다.

그리고 activity죽는건 알려주신 정보만으로는 알 수가 없죠..

"우리집 이사 가려고 하는데 좋은데 알려주세요." 정도에요 -_-

 

 

ignitepaper (1,720 포인트) 님이 2013년 6월 13일 답변
답변 감사합니다.
데이터의 수량은 10개정도 되는거같네요.
그리고 액티비티가 죽는거는.. 저도 로그를 보여드리고 싶지만 아무런 로그가 잡히지 않습니다..  addview 부분 코드를 올려 드리겠습니다.
        for (int i = 0; i < activityInfoArr.size(); i++) {
                final LinearLayout child = (LinearLayout) View.inflate(this, R.layout.screen_mypage_activity_item, null);
                Util.logI(" i)", i + "");
                activityAddLayout.addView(child);
                imageView = (ImageView) child.findViewById(R.id.my_activaty_line_iv);
                // imageView.setBackgroundResource(R.drawable.timeline_line01);

                textView = (TextView) child.findViewById(R.id.my_activaty_line_tv);
                // textView.setText(text);
                textView.setTypeface(fontUtil.gothicBold());
                // if()글자수 체크
                textView = (TextView) child.findViewById(R.id.my_activaty_station_tv1);
                // textView.setText(text);
                textView.setTypeface(fontUtil.gothicBold());
                // else {}글자수 체크
                textView = (TextView) child.findViewById(R.id.my_activaty_station_tv2);
                // textView.setText(text);
                textView.setTypeface(fontUtil.gothicBold());

                imageView = (ImageView) child.findViewById(R.id.my_activaty_time_category_iv);
                // imageView.setBackgroundResource(resid)

                textView = (TextView) child.findViewById(R.id.my_activaty_category_tv);
                // textView.setText(text);
                textView.setTypeface(fontUtil.rixGoM());

                textView = (TextView) child.findViewById(R.id.my_activaty_plactivatye_tv);
                // textView.setText(text);
                textView.setTypeface(fontUtil.rixGoM());

                textView = (TextView) child.findViewById(R.id.my_activaty_time_tv);
                // textView.setText(text);
                textView.setTypeface(fontUtil.ygo330_0());

                imageView = (ImageView) child.findViewById(R.id.my_activaty_time_food_iv);
                // DrawableDownloader.fetchDrawableOnThread("", imageView);

                textView = (TextView) child.findViewById(R.id.my_activaty_like_count_tv);
                // textView.setText(text);
                textView.setTypeface(fontUtil.gothicBold());

                textView = (TextView) child.findViewById(R.id.time_dislike_count_tv);
                // textView.setText(text);
                textView.setTypeface(fontUtil.gothicBold());

                button = (Button) child.findViewById(R.id.my_activaty_like_bt);
                button.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {

                    }
                });
                button = (Button) child.findViewById(R.id.my_activaty_dislike_bt);
                button.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {

                    }
                });
                button = (Button) child.findViewById(R.id.my_activaty_more_bt);
                button.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        LinearLayout linearLayout = (LinearLayout) child.findViewById(R.id.my_activaty_more_ll);
                        if (linearLayout.getVisibility() == View.GONE) {
                            linearLayout.setVisibility(View.VISIBLE);
                        } else {
                            linearLayout.setVisibility(View.GONE);
                        }
                    }
                });

            }
...