我在logcat hw_get_module_by_class:模块名称gralloc中发现了这个错误

时间:2017-12-02 12:48:26

标签: android android-studio android-fragments mobile

我在手机上运行我的应用程序。一切都很完美..但在我检查我的logcat进行调试之后。 它告诉我这个错误。

  

E / HAL:hw_get_module_by_class:模块名称gralloc   E / HAL:hw_get_module_by_class:模块名称gralloc

当用户第一次运行应用时,它会显示。它显示了应用程序显示启动画面的时间。我不确定哪个代码会让这件事情发生。 所以我会告诉你我的启动代码和我的片段家庭代码。

所以这是我的splasactivity代码:

package com.apps.mathar;

import android.content.Intent;
import android.content.res.Resources;
import android.os.Build;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.Window;
import android.view.WindowManager;

import com.apps.utils.Constant;
import com.apps.utils.JsonUtils;

public class SplashActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

//        hideStatusBar();
        setStatusColor();

        try {
           Constant.isFromPush = getIntent().getExtras().getBoolean("ispushnoti", false);
           Constant.pushID = getIntent().getExtras().getString("noti_nid");
        } catch (Exception e) {
            Constant.isFromPush = false;
        }
        try {
            Constant.isFromNoti = getIntent().getExtras().getBoolean("isnoti", false);
        } catch (Exception e) {
            Constant.isFromNoti = false;
        }

        JsonUtils jsonUtils = new JsonUtils(SplashActivity.this);

        Resources r = getResources();
        float padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, Constant.GRID_PADDING, r.getDisplayMetrics());
        Constant.columnWidth = (int) ((jsonUtils.getScreenWidth() - ((Constant.NUM_OF_COLUMNS + 1) * padding)) / Constant.NUM_OF_COLUMNS);

        if(!Constant.isFromNoti) {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    openMainActivity();
                }
            }, 2000);
        } else {
            openMainActivity();
        }
    }

    private void openMainActivity() {
        Intent intent = new Intent(SplashActivity.this,MainActivity.class);
        startActivity(intent);
        finish();
    }

    public void setStatusColor()
    {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
        {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(getResources().getColor(R.color.statusBar));
        }
    }
}

这是我的片段代码

    package com.apps.mathar;

        import android.content.Context;
        import android.content.Intent;
        import android.os.AsyncTask;
        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.support.v4.view.PagerAdapter;
        import android.support.v4.view.ViewPager;
        import android.support.v7.widget.DefaultItemAnimator;
        import android.support.v7.widget.LinearLayoutManager;
        import android.support.v7.widget.RecyclerView;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ImageView;
        import android.widget.ProgressBar;
        import android.widget.RelativeLayout;
        import android.widget.TextView;
        import android.widget.Toast;

        import com.apps.adapter.AdapterRecent;
        import com.apps.item.ItemSong;
        import com.apps.utils.Constant;
        import com.apps.utils.DBHelper;
        import com.apps.utils.JsonUtils;
        import com.apps.utils.RecyclerItemClickListener;
        import com.apps.utils.ZProgressHUD;
        import com.google.android.gms.ads.AdListener;
        import com.squareup.picasso.Callback;
        import com.squareup.picasso.Picasso;

        import org.json.JSONArray;
        import org.json.JSONException;
        import org.json.JSONObject;

        import java.util.ArrayList;

public class FragmentHome extends Fragment {

    DBHelper dbHelper;
    RecyclerView recyclerView;
    ArrayList<ItemSong> arrayList;
    ArrayList<ItemSong> arrayList_recent;
    AdapterRecent adapterRecent;
    ZProgressHUD progressHUD;
    LinearLayoutManager linearLayoutManager;
    public ViewPager viewpager;
    ImagePagerAdapter adapter;
    TextView textView_empty;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        View rootView = inflater.inflate(R.layout.fragment_home, container, false);
        setHasOptionsMenu(true);

        dbHelper = new DBHelper(getActivity());

        progressHUD = ZProgressHUD.getInstance(getActivity());
        progressHUD.setMessage(getActivity().getResources().getString(R.string.loading));
        progressHUD.setSpinnerType(ZProgressHUD.FADED_ROUND_SPINNER);

        textView_empty = (TextView)rootView.findViewById(R.id.textView_recent_empty);

        adapter = new ImagePagerAdapter();
        viewpager = (ViewPager)rootView.findViewById(R.id.viewPager_home);
        viewpager.setPadding(80,20,80,20);
        viewpager.setClipToPadding(false);
        viewpager.setPageMargin(40);
        viewpager.setClipChildren(false);
//        viewpager.setPageTransformer(true,new BackgroundToForegroundTransformer());

        arrayList = new ArrayList<ItemSong>();
        arrayList_recent = new ArrayList<ItemSong>();
        recyclerView = (RecyclerView)rootView.findViewById(R.id.recyclerView_home_recent);
        linearLayoutManager = new LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false);
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setItemAnimator(new DefaultItemAnimator());
        recyclerView.setHasFixedSize(true);

        if (JsonUtils.isNetworkAvailable(getActivity())) {
            new LoadLatestNews().execute(Constant.URL_LATEST);
        } else {
            Toast.makeText(getActivity(), getResources().getString(R.string.internet_not_conn), Toast.LENGTH_SHORT).show();
        }

        recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getActivity(), new RecyclerItemClickListener.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                if(JsonUtils.isNetworkAvailable(getActivity())) {
                    Constant.isOnline = true;
                    Constant.arrayList_play.clear();
                    Constant.arrayList_play.addAll(arrayList_recent);
                    Constant.playPos = position;
                    ((MainActivity)getActivity()).changeText(arrayList_recent.get(position).getMp3Name(),arrayList_recent.get(position).getCategoryName(),position+1,arrayList_recent.size(),arrayList_recent.get(position).getDuration(),arrayList_recent.get(position).getImageBig(),"home");

                    Constant.context = getActivity();
                    if(position == 0) {
                        Intent intent = new Intent(getActivity(), PlayerService.class);
                        intent.setAction(PlayerService.ACTION_FIRST_PLAY);
                        getActivity().startService(intent);
                    }
                } else {
                    Toast.makeText(getActivity(), getResources().getString(R.string.internet_not_conn), Toast.LENGTH_SHORT).show();
                }
            }
        }));

        return rootView;
    }

    private class LoadLatestNews extends AsyncTask<String, String, String> {

        @Override
        protected void onPreExecute() {
            progressHUD.show();
            arrayList.clear();
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... strings) {
            try {
                String json = JsonUtils.getJSONString(strings[0]);

                JSONObject mainJson = new JSONObject(json);
                JSONArray jsonArray = mainJson.getJSONArray(Constant.TAG_ROOT);
                JSONObject objJson = null;
                for (int i = 0; i < jsonArray.length(); i++) {
                    objJson = jsonArray.getJSONObject(i);

                    String id = objJson.getString(Constant.TAG_ID);
                    String cid = objJson.getString(Constant.TAG_CAT_ID);
                    String cname = objJson.getString(Constant.TAG_CAT_NAME);
                    String artist = objJson.getString(Constant.TAG_ARTIST);
                    String name = objJson.getString(Constant.TAG_SONG_NAME);
                    String url = objJson.getString(Constant.TAG_MP3_URL);
                    String desc = objJson.getString(Constant.TAG_DESC);
                    String duration = objJson.getString(Constant.TAG_DURATION);
                    String image = objJson.getString(Constant.TAG_THUMB_B).replace(" ","%20");
                    String image_small = objJson.getString(Constant.TAG_THUMB_S).replace(" ","%20");

                    ItemSong objItem = new ItemSong(id,cid,cname,artist,url,image,image_small,name,duration,desc);
                    arrayList.add(objItem);
                }

                return "1";
            } catch (JSONException e) {
                e.printStackTrace();
                return "0";
            } catch (Exception ee) {
                ee.printStackTrace();
                return "0";
            }

        }

        @Override
        protected void onPostExecute(String s) {
            recyclerView.setAdapter(adapterRecent);
            if(s.equals("1")) {
                progressHUD.dismissWithSuccess(getResources().getString(R.string.success));
//                setLatestVariables(0);

                if(Constant.isAppFirst) {
                    if(arrayList.size()>0) {
                        Constant.isAppFirst = false;
                        Constant.arrayList_play.addAll(arrayList);
                        ((MainActivity)getActivity()).changeText(arrayList.get(0).getMp3Name(),arrayList.get(0).getCategoryName(),1,arrayList.size(),arrayList.get(0).getDuration(),arrayList.get(0).getImageBig(),"home");
                        Constant.context = getActivity();
                    }
                }

                viewpager.setAdapter(adapter);

                loadRecent();
//                adapterPagerTrending = new AdapterPagerTrending(getActivity(),Constant.arrayList_trending);
//                viewPager_trending.setAdapter(adapterPagerTrending);

//                adapterTopStories = new AdapterTopStories(getActivity(),Constant.arrayList_topstories);
//                listView_topstories.setAdapter(adapterTopStories);

//                setListViewHeightBasedOnChildren(listView_topstories);
                adapterRecent.notifyDataSetChanged();

            } else {
                progressHUD.dismissWithFailure(getResources().getString(R.string.error));
                Toast.makeText(getActivity(), getResources().getString(R.string.server_no_conn), Toast.LENGTH_SHORT).show();
            }
            super.onPostExecute(s);
            recyclerView.setAdapter(adapterRecent);
        }
    }


    private void loadRecent() {
        arrayList_recent = dbHelper.loadDataRecent();
        adapterRecent = new AdapterRecent(getActivity(),arrayList_recent);
        recyclerView.setAdapter(adapterRecent);

        if(arrayList_recent.size() == 0) {
            recyclerView.setVisibility(View.GONE);
            textView_empty.setVisibility(View.VISIBLE);
        } else {
            recyclerView.setVisibility(View.VISIBLE);
            textView_empty.setVisibility(View.GONE);
        }
    }

    private class ImagePagerAdapter extends PagerAdapter {

        private LayoutInflater inflater;

        public ImagePagerAdapter() {
            // TODO Auto-generated constructor stub

            inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {
            return arrayList.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view.equals(object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {

            View imageLayout = inflater.inflate(R.layout.viewpager_home, container, false);
            assert imageLayout != null;
            ImageView imageView = (ImageView) imageLayout.findViewById(R.id.imageView_pager_home);
            final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading_home);
            TextView title = (TextView) imageLayout.findViewById(R.id.textView_pager_home_title);
            TextView cat = (TextView) imageLayout.findViewById(R.id.textView_pager_home_cat);
            RelativeLayout rl = (RelativeLayout)imageLayout.findViewById(R.id.rl_homepager);

            title.setText(arrayList.get(position).getMp3Name());
            cat.setText(arrayList.get(position).getCategoryName());

            Picasso.with(getActivity())
                    .load(arrayList.get(position).getImageBig())
                    .placeholder(R.mipmap.app_icon)
                    .into(imageView, new Callback() {
                        @Override
                        public void onSuccess() {
                            spinner.setVisibility(View.GONE);
                        }

                        @Override
                        public void onError() {
                            spinner.setVisibility(View.GONE);
                        }
                    });

            rl.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(JsonUtils.isNetworkAvailable(getActivity())) {
                        //showInter();
                        playIntent();
                    } else {
                        Toast.makeText(getActivity(), getResources().getString(R.string.internet_not_conn), Toast.LENGTH_SHORT).show();
                    }
                }
            });

            container.addView(imageLayout, 0);
            return imageLayout;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
    }

    /*    private void showInter() {
            Constant.adCount = Constant.adCount + 1;
            if(Constant.adCount % Constant.adDisplay == 0) {
                ((MainActivity)getActivity()).mInterstitial.setAdListener(new AdListener() {

                    @Override
                    public void onAdClosed() {
                        playIntent();
                        super.onAdClosed();
                    }
                });
                if(((MainActivity)getActivity()).mInterstitial.isLoaded()) {
                    ((MainActivity)getActivity()).mInterstitial.show();
                    ((MainActivity)getActivity()).loadInter();
                } else {
                    playIntent();
                }
            } else {
                playIntent();
            }
        }
    */
    private void playIntent() {
        Constant.isOnline = true;
        int pos = viewpager.getCurrentItem();
        Constant.arrayList_play.clear();
        Constant.arrayList_play.addAll(arrayList);
        Constant.playPos = pos;
        ((MainActivity)getActivity()).changeText(arrayList.get(pos).getMp3Name(),arrayList.get(pos).getCategoryName(),pos+1,arrayList.size(),arrayList.get(pos).getDuration(),arrayList.get(pos).getImageBig(),"home");

        Constant.context = getActivity();
        if(pos == 0) {
            Intent intent = new Intent(getActivity(), PlayerService.class);
            intent.setAction(PlayerService.ACTION_FIRST_PLAY);
            getActivity().startService(intent);
        }
    }
}

再一次,我确定这里发生了什么。

我从3天前看到此错误,但我检查了我的代码,我不知道这段代码有什么问题。

1 个答案:

答案 0 :(得分:0)

当您的循环没有终止时会发生这种错误。我也遇到过类似的情况,从字面上看,我花了两天时间才找出问题的根本原因。

我的问题是:

enter image description here

运行上面的代码时,我曾经遇到这种错误 hw_get module_by class _gralloc ...

我真的很沮丧,因为我无法找到根本原因,幸运的是,我发现代码的上述部分是主要原因,因为循环永远不会在上述部分终止,并且当我发现问题的主要原因是我将其替换为:

enter image description here

然后,问题解决了。 所以也许您的问题出在循环或类似情况下。