2016-12-06 227 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编译时间。 –

相关问题