I am creating a basic application with navigation drawer and fragments.I am initializing all the fragments at once and hide them at start and according to user click I am showing required fragments.It runs perfectly but it generates message Skipped 81 frames! The application may be doing too much work on its main thread..I have read about it,that we should use sepreate thread for performing long running operations.But in my application i am not doing such thing and still it generates this message.
This is my code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
mContext = HomeActivity.this;
HomeMenuButtonLayout = (LinearLayout) findViewById(R.id.HomeMenuButtonLayout);
HomeMenuButtonLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDrawerLayout.openDrawer(GravityCompat.START);
}
});
// load slide menu items
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_item);
navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_item_icon);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
navDrawerItems = new ArrayList<NavDrawerItem>();
// adding nav drawer items to array
for (int i = 0; i < navMenuTitles.length; i++) {
navDrawerItems.add(new NavDrawerItem(navMenuTitles[i], navMenuIcons.getResourceId(i, -1)));
}
// Set Header Right Drawer
LayoutInflater inflaters = getLayoutInflater();
ViewGroup headertop = (ViewGroup) inflaters.inflate(R.layout.list_home_header, mDrawerList,
false);
mDrawerList.addHeaderView(headertop, null, false);
// setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),
navDrawerItems, "yes");
mDrawerList.setAdapter(adapter);
setLastFragmentTag("HOME");
setTitleText("Home");
Fragment Fragment1 = new HomeFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.frame_container, Fragment1, getLastFragmentTag());
transaction.commit();
Fragment Fragment2 = new FriendListFragment();
FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.frame_container, Fragment2, "Friends");
transaction.hide(Fragment2);
transaction1.commit();
Fragment Fragment3 = new ChatFragment();
FragmentTransaction transaction2 = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.frame_container, Fragment3, "Chat");
transaction.hide(Fragment3);
transaction2.commit();
Fragment Fragment4 = new SettingsFragment();
FragmentTransaction transaction3 = getSupportFragmentManager().beginTransaction();
transaction3.add(R.id.frame_container, Fragment4, "SETTINGS");
transaction3.hide(Fragment4);
transaction3.commit();
Fragment Fragment5 = new Fragment5();
FragmentTransaction transaction4 = getSupportFragmentManager().beginTransaction();
transaction4.add(R.id.frame_container, Fragment5, "PURCHASE");
transaction4.hide(Fragment5);
transaction4.commit();
Fragment Fragment6 = new PurchasedHistoryFragment();
FragmentTransaction transaction5 = getSupportFragmentManager().beginTransaction();
transaction5.add(R.id.frame_container, Fragment6, "SALES");
transaction5.hide(Fragment6);
transaction5.commit();
Fragment Fragment7 = new NewsAndOffersFragment();
FragmentTransaction transaction6 = getSupportFragmentManager().beginTransaction();
transaction6.add(R.id.frame_container, Fragment7, "OFFER");
transaction6.hide(Fragment7);
transaction6.commit();
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
if (position == 1) {
openFragment("HOME");
setTitleText("Home");
}
if (position == 3) {
openFragment("Friends");
setTitleText("Friends");
}
if (position == 6) {
//openFragment(new NewsAndOffersFragment());
openFragment("Chat");
setTitleText("Chat");
}
if (position == 2) {
// openFragment(new ChatFragment());
openFragment("SETTINGS");
setTitleText("SETTINGS");
}
if (position == 8) {
openFragment("SETTINGS");
setTitleText("Settings");
}
if (position == 4) {
//openFragment(new Fragment5());
openFragment("PURCHASE");
setTitleText("PURCHASE");
}
if (position == 5) {
// openFragment(new PurchasedHistoryFragment());
openFragment("SALES");
setTitleText("SALES");
}
}
});
public void openFragment(final String currentTag) {
// TODO Auto-generated method stub
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (currentTag == getLastFragmentTag()) {
mDrawerLayout.closeDrawers();
} else {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.show(getSupportFragmentManager().findFragmentByTag(currentTag));
transaction.hide(getSupportFragmentManager().findFragmentByTag(getLastFragmentTag()));
transaction.commit();
}
setLastFragmentTag(currentTag);
}
}, 300);
mDrawerLayout.closeDrawers();
}
}
so my question is,how to put and what part of code should i put on seperate thread.I am not using any api till now.