Ich habe Tab-Layout mit 5 Tabs jeder hat separate Fragmente, erste Fragment zeigt RSS News Feed, die vom Server abgeholt werden, nimmt diese Nachricht Fragment viel von Zeit zu laden, also habe ich so neu arrangiert, dass Nachrichtenfragmente am Ende. aber es dauert immer noch die gleiche Zeit, um die App zu starten. Ich brauche etwas Hilfe, um die Startzeit zu verkürzen, indem ich zuerst weniger geladene fragmentierte Tabs zeige.Wie Fragmente in Tab-Layout in bestimmter Reihenfolge zu laden, so dass ich App-Startzeit reduzieren kann
Das ist mein Tab Layout-Aktivität ist, hier ist mein 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();
}
registerinBackground() -Methode Code
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 hat diesen 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);
}
}
Tab Layout-0 [ welches Nachrichtenfeed erhält]
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;
}
Dank für Ihre Ausgaben wertvolle Zeit mir dieses Problems enthalten zu helfen. aber das Problem ist mit dem RSS-Feed-Fragment, das die Startzeit meiner App auffrischt, also möchte ich dieses Fragment nicht zum Startzeitpunkt laden, wenn ich weniger geladene Fragmente beim Start laden kann, dann kann ich die Nachrichten laden feed fragment am letzten, ich glaube nicht, dass ich es erreichen kann, wenn ich View Pager benutze. Hast du eine Idee? Wenn ja, lass es mich wissen. und ich weiß nicht, wie dieser gefälschte Fragment-Trick funktioniert, aber auf jeden Fall schlecht ausprobieren. Vielen Dank für Ihre wertvolle Antwort. –
kann ich wissen, was Dienstprogramm in diesem Code ist? Wenn es eine Klasse ist, dann poste bitte den Code für die Utility-Klasse. Vielen Dank im Voraus. –
Es ist nur eine Hilfsklasse, um zu überprüfen, ob das Objekt null ist. Ich habe die Klasse in der Bearbeitung hinzugefügt –