Android应用程序-长时间加载

Android应用程序-长时间加载,android,garbage-collection,loading,Android,Garbage Collection,Loading,我开发了这个应用程序,一切正常,但加载需要4-5秒,我不知道为什么,因为没有要加载的图像或互联网内容,只有logcat传播大约500条关于垃圾收集器的消息。你能告诉我我做错了什么吗?下面是一些代码: public class HNappActivity extends SherlockFragmentActivity implements HeadlinesFragment.OnHeadlineSelectedListener, CABNavLis{ HeadlinesFragmen

我开发了这个应用程序,一切正常,但加载需要4-5秒,我不知道为什么,因为没有要加载的图像或互联网内容,只有logcat传播大约500条关于垃圾收集器的消息。你能告诉我我做错了什么吗?下面是一些代码:

 public class HNappActivity extends SherlockFragmentActivity implements 
 HeadlinesFragment.OnHeadlineSelectedListener, CABNavLis{

  HeadlinesFragment hnHeadlinesFragment;
  int hnCatIndex = 0;
  int hnArtIndex = 0;
  Categories hnCurrentCat;
  public String[] Rubriky = null;
  int count;

  @Override
      public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      requestWindowFeature(Window.FEATURE_NO_TITLE);
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

      setContentView(R.layout.activity_hnapp);

      Rubriky = ((HNapp) this.getApplication()).getRubriky();
      count=((HNapp) this.getApplication()).getCount();

      hnHeadlinesFragment = (HeadlinesFragment) getSupportFragmentManager().findFragmentById(
              R.id.headlines);
      hnHeadlinesFragment.setOnHeadlineSelectedListener(this);

      hnCatIndex = savedInstanceState == null ? 0 : savedInstanceState.getInt("catIndex", 0);

      hnHeadlinesFragment.setSelectable(true);
      restoreSelection(savedInstanceState);
  }

  void restoreSelection(Bundle savedInstanceState) {
         if (savedInstanceState != null) {
             setNewsCategory(savedInstanceState.getInt("catIndex", 0));
                 int artIndex = savedInstanceState.getInt("artIndex", 0);
                 hnHeadlinesFragment.setSelection(artIndex);
                 OnHeadlineSelected(artIndex);
        }
    }
活动_hnapp.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:orientation="vertical"
     android:layout_width="match_parent"
     android:layout_height="match_parent">    
    <fragment
     android:id="@+id/headlines"
     android:name="sk.ecopress.hn.android.HeadlinesFragment"
     android:layout_width="match_parent"
     android:layout_height="0dp"
     android:layout_weight="1.03" />
   <RelativeLayout
     android:id="@+id/relative_layout1"
     android:layout_width="match_parent"
     android:layout_height="40dp"
     android:orientation="horizontal" >

   <Button
       android:id="@+id/titulka"
       android:layout_width="40dp"
       android:layout_height="40dp"
       android:padding="0dp"
       android:layout_alignParentLeft="true"
       android:text="@string/titulka" />

   <Button
       android:id="@+id/sekcie"
       android:layout_width="40dp"
       android:layout_height="40dp"
       android:layout_toRightOf="@id/titulka"
       android:text="@string/sekcie"
       android:padding="0dp" />

   <Button
       android:id="@+id/bookmarks"
       android:layout_width="40dp"
       android:layout_height="40dp"
       android:layout_toRightOf="@id/sekcie"
       android:text="@string/bookmarks"
       android:padding="0dp" />

   <Button
       android:id="@+id/info"
       android:layout_width="40dp"
       android:layout_height="40dp"
       android:padding="0dp"
       android:layout_alignParentRight="true"
       android:onClick="info"
       android:text="@string/info" />

   <Button
       android:id="@+id/nastavenia"
       android:layout_width="40dp"
       android:layout_height="40dp"
       android:padding="0dp"
       android:layout_toLeftOf="@id/info"
       android:onClick="settings"
       android:text="@string/nastavenia" />


谢谢

如果垃圾收集工作很努力,那是因为您正在创建大量垃圾:)。逐行运行调试,查看哪一行被卡住。 从您发布的代码来看,生成此垃圾的不是android sdk代码。 我的赌注是:

Rubriky=((HNapp)this.getApplication()).getRubriky()


它有什么作用?访问本地文件或其他什么?

除此之外,如果getRubriky方法正在执行一些重载,您可能应该将此调用移动到后台线程,而不是在UI线程上调用它,根据定义,UI线程是唯一正在运行的线程。它正在访问本地变量,该变量可以从所有活动中更改。这只是一个字符串数组,最多12个元素。@MilošLukačka在调试中一步一步地检查并找到问题所在,我们无法猜测出问题出在哪里,直到您深入了解问题的确切原因。您知道一些很酷的教程如何处理调试工作,例如逐行调试吗?