2012-09-29 77 views
0

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

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); 
     } 
    } 

activity_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" /> 

感谢

回答

0

如果垃圾收集工作辛苦,那是因为你创建了很多垃圾:)。逐行调试,看看哪一行卡住了。 从你发布的代码来看,它不是产生垃圾的android sdk代码。 我的投注将在线上:

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

它是做什么的?访问本地文件或其他东西?

+0

除此之外,如果getRubriky方法正在执行一些繁重的加载操作,则应该将此调用移动到后台线程,而不是在UI线程上调用它,UI线程定义为唯一运行的线程。 – Darwind

+0

它正在访问局部变量,可以从所有活动更改的变量。它只是字符串数组,最多12个元素。 –

+0

@MilošLukačka在调试中一步一步地找到问题,我们无法猜测出什么问题,直到您深入了解问题的原因。 – Sean