J'ai la disposition des onglets avec 5 onglets chacun a des fragments séparés, le premier fragment affiche flux RSS Nouvelles qui sont récupérées du serveur, ce fragment de nouvelles prend beaucoup de temps à charger donc je réarrangé de telle manière que le fragment de nouvelles à la fin. mais cela prend toujours le même temps pour lancer l'application. J'ai besoin d'aide pour réduire le temps de lancement en montrant d'abord l'onglet fragmenté moins chargé.Comment charger des fragments dans la disposition d'onglet dans un certain ordre afin que je puisse réduire le temps de lancement de l'application
Ceci est mon activité de mise en page Tab, voici mon code \
public class NewActivity extends FragmentActivity {
String user_retr_password=null;
String newpassword;
String dobstr;
String currentdate;
Boolean doubleBackToExitPressedOnce = false;
String id,regid;
String mobileno;
Session se;
UserInfo UInfo;
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
private int[] tabIcons = {
R.drawable.news123,
R.drawable.notification,
R.drawable.club3,
R.drawable.myspaces
R.drawable.Home
};
ImageButton userImage_ImageButton;
Bitmap UserImage = null;
Context context;
Point p;
public static FragmentManager fragmentManager;
private ProgressBar mProgressBar;
RelativeLayout LoadingPanel;
int TabSelected = 0;
public static LocationManager locationManager;
public static LocationListener locationListener;
static List<AdvertizementTableModel.AdvInfo> Adv_List = new ArrayList<AdvertizementTableModel.AdvInfo>();
static List<Bitmap> AdvertizementImagesList = new ArrayList<Bitmap>();
PopupWindow popup;
WebView Adv_myWebView;
static PopupWindow popupWebView = null;
static AnimationDrawable animation = new AnimationDrawable();
static boolean activeActivity = false;
private GoogleApiClient client;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newactivity);
context = getApplicationContext();
fragmentManager = getSupportFragmentManager();
UInfo = (UserInfo) getIntent().getSerializableExtra("UInfo");
try {
Date dob = UInfo.getDateOfBirth();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
dobstr = df.format(dob);
}catch(Exception e){}
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
currentdate = sdf.format(c.getTime());
mobileno=UInfo.getMobile().toString();
TabSelected = (Integer) getIntent().getIntExtra("TAB", 0);
userImage_ImageButton = (ImageButton) findViewById(R.id.userImage_ImageButton);
LoadingPanel = (RelativeLayout) findViewById(R.id.LoadingPanel_NewActivity);
viewPager = (ViewPager) findViewById(R.id.viewpager);
Adv_myWebView = (WebView) findViewById(R.id.webview);
tabLayout = (TabLayout) findViewById(R.id.rsscategory_tabs);
tabLayout.setVisibility(View.INVISIBLE);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
LoadingPanel.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.VISIBLE);
registerInBackground();
userImage_ImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopup(aappen.com.buddiesnew.NewActivity.this, p);
}
});
GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
try {
checkEnteryinUser();
checkEnteryinUserprofile();
getIdRegId(UInfo.getMobile());
}catch(Exception e){
}
retivepasswordfromphp();
}
code méthode registerinBackground()
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
String msg = "";
setUserPicFromSqlite();
return msg;
}
@Override
protected void onPostExecute(String msg) {
runOnUiThread(new Runnable() {
public void run() {
setupViewPager(viewPager);
setupTabIcons();
tabLayout.setupWithViewPager(viewPager);
}
});
ViewTreeObserver vto = userImage_ImageButton.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
userImage_ImageButton.getViewTreeObserver().removeOnPreDrawListener(this);
width = userImage_ImageButton.getMeasuredHeight();
height = userImage_ImageButton.getMeasuredWidth();
Bitmap circleBitmap = getRoundedCroppedBitmap(UserImage, width - 2);
userImage_ImageButton.setImageBitmap(circleBitmap);
return true;
}
});
LoadingPanel.setVisibility(View.INVISIBLE);
LoadingPanel.setVisibility(View.INVISIBLE);
mProgressBar.setVisibility(View.INVISIBLE);
tabLayout.setVisibility(View.VISIBLE);
getAdvertizementDetailsInBackgroundFromSqlite();
}
}.execute(null, null, null);
}
onPostExcute a ce code
private void setupTabIcons() {
tabLayout.getTabAt(0).setIcon(tabIcons[0]);
tabLayout.getTabAt(1).setIcon(tabIcons[1]);
tabLayout.getTabAt(2).setIcon(tabIcons[2]);
tabLayout.getTabAt(3).setIcon(tabIcons[3]);
tabLayout.getTabAt(4).setIcon(tabIcons[4]);
}
private void setupViewPager(final ViewPager viewPager) {
final NewActivity.ViewPagerAdapter adapter = new NewActivity.ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new TabFragment7(), "News");
adapter.addFragment(new TabFragment2(), "Message");
adapter.addFragment(new TabFragment4(), "Club");
adapter.addFragment(new TabFragment0(), "Home");
adapter.addFragment(new TabFragment5(), "My Space");
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(TabSelected);
viewPager.setOffscreenPageLimit(4);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
ViewPager adapter
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
Mise en page de l'onglet 0 [ qui obtient le fil de nouvelles]
public class TabFragment0 extends Fragment {
UserInfo UInfo;
Context context;
ImageButton EditImageButton;
Bitmap ImageBitmap = null, LogoBitmap=null;
int width;
int height;
TableLayout tl;
TableRow tr;
ImageView RssurlImageView;
Bitmap RssImageBitmap;
ImageView RssSourceImage;
Activity context1;
WebView mWebview;
ImageButton closeWebView_Button, RssCategoryEdit_Button,share_ImageButton;
List<RSSMasterInfo> RSSMasterList = new ArrayList<RSSMasterInfo>();
String Names,Urls,Imagelinks;
String[] newsnames, newsurls, newslogo;
List<String> NewsNameList = new ArrayList<String>();
List<String> NewsUrlsList = new ArrayList<String>();
List<String> NewsLogoList = new ArrayList<String>();
List<RSSMasterInfo.RssfeedSubCategoryLink> RssLinkForOnTouch = new ArrayList<RSSMasterInfo.RssfeedSubCategoryLink>();
RSSMasterInfo.RssfeedSubCategoryLink rssOnTouchInfo = new RSSMasterInfo.RssfeedSubCategoryLink();
ScrollView scrollview;
ImageButton reloadImageButton;
int finalImagecount = 0;
static boolean activeActivity = false;
static Boolean UpdateImagesFlag = false;
SwipeRefreshLayout swipeRss;
boolean isItPrinted = false;
String Link=null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab_fragment_0, null, false);
UInfo = (UserInfo) getActivity().getIntent().getSerializableExtra("UInfo");
EditImageButton = (ImageButton) view.findViewById(R.id.Rss_EditImageButton);
RelativeLayout rl = (RelativeLayout) view.findViewById(R.id.rssfeed_relativelayout);
tl = (TableLayout) view.findViewById(R.id.rsstablelayout);
reloadImageButton = (ImageButton) view.findViewById(R.id.ReloadImages_ImageButton);
mWebview = (WebView) view.findViewById(R.id.rssFeed_WebView);
closeWebView_Button = (ImageButton) view.findViewById(R.id.closeWebView_Button);
RssCategoryEdit_Button = (ImageButton) view.findViewById(R.id.Rss_EditImageButton);
scrollview = (ScrollView) view.findViewById(R.id.mainscrollView);
share_ImageButton=(ImageButton)view.findViewById(R.id.share_ImageButton);
// swipeRss = (SwipeRefreshLayout) view.findViewById(R.id.swipreRssRefresh);
mWebview.setVisibility(View.INVISIBLE);
closeWebView_Button.setVisibility(View.INVISIBLE);
share_ImageButton.setVisibility(View.INVISIBLE);
context = getActivity().getApplicationContext();
context1 = getActivity();
deleteRssImages();
RssSourceImage = (ImageView) view.findViewById(R.id.RssSourceImageView);
finalImagecount = 0; //Returns the number of STATIC IMAGES i.e The Images that are loaded when there is no RSS FEED.
reloadImageButton.setVisibility(View.VISIBLE);
reloadImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
reloadImageButton.setVisibility(View.VISIBLE);
tryGetNewFeed();
}
});
scrollview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
onTouchEvent(event);
return false;
}
});
return view;
}
@Override
public void onStart() {
super.onStart();
try {
//startFeedTab();
getFinalRSSfeeds(); //this gets Rss news feed.....
// tryGetNewFeed();
} catch (Exception e1) {
e1.printStackTrace();
}
activeActivity = true;
}
Merci pour passer votre temps précieux pour me aider à sortir de ce problème. mais le problème est avec ce fragment de flux RSS qui mange le temps de lancement de mon application, donc je ne veux pas charger ce fragment au moment du lancement, si je sera en mesure de charger le fragment moins chargé au lancement, puis je peux charger les nouvelles Je ne pense pas pouvoir y parvenir si j'utilise View Pager. Avez-vous une idée? Si oui, faites le moi savoir. et je ne sais pas comment cette fausse astuce de fragment fonctionne mais certainement mal essayer. Merci l'homme pour votre réponse précieuse. –
puis-je savoir ce qui est utilitaire dans ce code? Si c'est une classe alors s'il vous plaît poster le code pour la classe utilitaire. Merci d'avance. –
C'est juste une classe d'aide pour vérifier si l'objet est nul. J'ai ajouté la classe dans l'édition –