Я работаю над приложением запуска, где я создал рабочий стол, и на моем рабочем столе есть кнопка приложения. Когда я нажимаю кнопку ящика приложения, для открытия активности моих приложений требуется очень много времени! Я не знаю, почему это происходит, я пытался использовать высокопроизводительные устройства, такие как Nexus 5, но никаких изменений. Любые решения? Вот мой код:Почему моя кнопка очень медленно реагирует на Android?
От Homescreen Служб активность Код:
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 получил ответ?
Можете ли вы опубликовать stacktrace, когда нажимаете кнопку – 3xplore
Чувак, где я найду это в Eclipse? –
Правильный способ - загрузить приложение в первый раз, сохранить его в кеше, а в следующий раз загрузить приложения в кеш и загрузить новые приложения с помощью asyntask или UIThread. – Santiago