2016-12-06 143 views
1

我遇到了應用程序啓動時的問題。如果我啓動我的應用程序(啓動主要活動),則需要大約3-4秒才能最終顯示應用程序。我從onCreate方法中刪除了所有內容,因此它只包含setContentView(R.layout.activity_main),它設置了一個簡單的LinearLayout。 MainActivity中沒有複雜的佈局結構或其他繁重的代碼。應用程序啓動時間很長

用於記錄啓動時間我都用在ADB shell命令它給我下面的輸出:

12-06 11:40:06.395 918 939 I am_activity_launch_time: [0,78089240, de.package.package/.MainActivity,3724,3724] 

也TraceView:

enter image description here

我不是很熟悉TraceView,所以我不太瞭解輸出,但「bindApplication」部分需要很長時間。 我還進口了我的gradle這個文件,我需要爲應用程序的一些庫,也許他們會影響啓動時間:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.0" 

    repositories { 
     mavenCentral() 
     jcenter() 
    } 

    defaultConfig { 
     applicationId "de.watado.watado" 
     minSdkVersion 16 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:25.0.1' 
    compile 'com.android.support:support-v4:25.0.1' 
    compile 'com.squareup.retrofit2:retrofit:2.1.0' 
    compile 'com.github.bumptech.glide:glide:3.7.0' 
    compile 'com.balysv:material-ripple:1.0.2' 
    compile 'com.google.android.gms:play-services-location:9.8.0' 
    compile 'com.google.android.gms:play-services-maps:9.8.0' 
    compile 'com.google.maps.android:android-maps-utils:0.4.4' 
    compile 'com.crystal:crystalrangeseekbar:1.1.1' 
    compile 'com.android.support:cardview-v7:25.0.1' 
} 

有誰知道爲什麼需要這麼長的時間來顯示我的應用程序?

編輯: MainActivity

public class MainActivity extends FragmentActivity implements View.OnClickListener, 
                  ViewPager.OnPageChangeListener{ 

private TextView tvHome, tvCat, tvSearch, tvLike; 
private int currentPos = 0; 
private ViewPager pager; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public void onClick(View view) { 
    switch (view.getId()){ 
     case R.id.textView_home: 
      changeButtonState(-1); 
      break; 
     case R.id.textView_categories: 
      changeButtonState(0); 
      break; 
     case R.id.textView_search: 
      changeButtonState(1); 
      break; 
     case R.id.textView_like: 
      changeButtonState(2); 
      break; 
    } 
} 
} 
+0

請分享應用程序清單文件 –

+0

它看起來像你的代碼是缺少的東西。你擁有所有這些依賴關係是沒有用的? – zombie

+0

您是否在應用程序中使用任何圖像(閃屏)如果是這樣,請檢查它的大小和分辨率 – zombie

回答

0

你可以發佈您的自定義應用程序類和第一個活動?另外,請在發佈模式下檢查運行時間 - 由於InstantRun

+0

更新了我的問題,但我不使用自定義應用程序類。 – RyuZz

+0

好吧,所以請嘗試構建發佈版本並檢查發佈時間 - 也許您不必擔心它 –

+0

發佈版本中的發佈時間相同:/ – RyuZz

0

可能的原因:

  1. 使用Multidex增加了發射時間。

  2. 如果您清除數據並啓動應用程序,則需要更長的時間,因爲ART運行時的 會先編譯應用程序。

+0

我不使用multidex和發佈時間重建要高得多(約5秒)。 – RyuZz

+0

安裝谷歌Play商店新鮮的應用程序後的啓動時間並不算多。因爲安裝時也考慮了ART編譯時間。 –

相關問題