Why my button reacts very slowly in Android? -


i'm working on launcher app, i've created homescreen , on homescreen there app drawer button. when press app drawer button, takes long time open apps activity! don't know why happening, tried on high end devices nexus 5, no changes. solutions? here's code:

from homescreen apps activity code:

drawer.setonclicklistener(new onclicklistener() {              @override             public void onclick(view arg0) {                 // todo auto-generated method stub                 intent myintent = new intent(mainactivity.this, apps.class);                 startactivity(myintent);                 overridependingtransition( r.anim.left, r.anim.rtl);             }         }); 

appsactivity.java:

public class apps extends activity {      sharedpreferences colors_app, color_label;     gridview mgrid;      @override     protected void oncreate(bundle savedinstancestate) {         // todo auto-generated method stub         super.oncreate(savedinstancestate);          setcontentview(r.layout.apps);          loadapps();          mgrid = (gridview) findviewbyid(r.id.app_grid);          appsadapter adapter = new appsadapter(this);         mgrid.setadapter(adapter);          colors_app = getsharedpreferences("mycolor", 1);          int colorcode2 = colors_app.getint("color_code", 0);         if (colorcode2 != 0) {              apps.this.findviewbyid(r.id.apps_back).setbackgroundcolor(                     colorcode2);          }          mgrid.setonitemlongclicklistener(new onitemlongclicklistener() {              @override             public boolean onitemlongclick(adapterview<?> parent,                     view convertview, int position, long id) {                 // todo auto-generated method stub                 resolveinfo cleckedresolveinfo2 = (resolveinfo) parent                         .getitematposition(position);                 activityinfo clickedactivityinfo2 = cleckedresolveinfo2.activityinfo;                  uri packageuri = uri.parse("package:"                         + clickedactivityinfo2.applicationinfo.packagename);                 intent uninstallintent = new intent(intent.action_delete,                         packageuri);                 startactivity(uninstallintent);                  return true;             }          });          mgrid.setonitemclicklistener(new onitemclicklistener() {              public void onitemclick(adapterview<?> parent, view convertview,                     int position, long id) {                 resolveinfo cleckedresolveinfo = (resolveinfo) parent                         .getitematposition(position);                 activityinfo clickedactivityinfo = cleckedresolveinfo.activityinfo;                  intent intent = new intent(intent.action_main);                 intent.addcategory(intent.category_launcher);                 intent.setclassname(                         clickedactivityinfo.applicationinfo.packagename,                         clickedactivityinfo.name);                 intent.setflags(intent.flag_activity_new_task                         | intent.flag_activity_reset_task_if_needed);                 startactivity(intent);             }          });     }      private list<resolveinfo> mapps;      private void loadapps() {         intent mainintent = new intent(intent.action_main, null);         mainintent.addcategory(intent.category_launcher);          mapps = getpackagemanager().queryintentactivities(mainintent, 0);      }      public class appsadapter extends baseadapter {          private context context;         private layoutinflater layoutinflater;          public appsadapter(context c) {             context = c;             layoutinflater = layoutinflater.from(context);          }          public view getview(int position, view convertview, viewgroup parent) {             view grid;              if (convertview == null) {                  grid = new view(context);                 grid = layoutinflater.inflate(r.layout.grid_custom, null);              } else {                 grid = (view) convertview;             }              resolveinfo info = mapps.get(position);              imageview icon = (imageview) grid.findviewbyid(r.id.icon);             icon.setimagedrawable(info.activityinfo                     .loadicon(getpackagemanager()));              textview label = (textview) grid.findviewbyid(r.id.label);             typeface tf_label = typeface.createfromasset(getassets(),                     "fonts/robotoc-regular.ttf");             label.settypeface(tf_label);             label.settext(info.activityinfo.loadlabel(getpackagemanager())                     .tostring());              color_label = getsharedpreferences("labelcolor", 1);              int color_lab = color_label.getint("color_code_label", 0);             if (color_lab != 0) {                 label.settextcolor(color_lab);              }              return grid;         }          public final int getcount() {             return mapps.size();         }          public final object getitem(int position) {             return mapps.get(position);         }          public final long getitemid(int position) {             return position;         }     } } 

nobodys got answer?

profiling performance of code let see bottleneck is.

i suggest in getview() function:

(1) function call loadlabel known potentially slow.

packageinfo loadlabel slow performance

(2) calling typeface.createfromasset every item in adapter not idea.


Comments

Popular posts from this blog

Magento/PHP - Get phones on all members in a customer group -

php - .htaccess mod_rewrite for dynamic url which has domain names -

Website Login Issue developed in magento -