2010-11-08 9 views
0

Производительность приложения Android низка, требуется длительное время запуска. У меня есть 5 кнопок, одно изображение, 3 textView, 2 editText и один listView, инициализированный методом onCreate(). Является ли большое количество объектов ui причиной медленного запуска? Есть ли ошибка в manifest.xml ??сделать производительность приложения для Android лучше

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.ars.application" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<application android:icon="@drawable/lightvasicon" android:label="@string/app_name" android:debuggable="true"> 
    <activity android:name=".LightVas" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait" 
       android:configChanges="keyboardHidden|orientation" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
<uses-permission 
android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> 
<uses-permission 
android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> 
<uses-permission 
android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission> 
<uses-permission 
android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission> 
<uses-permission 
android:name="android.permission.CONTROL_LOCATION_UPDATES"></uses-permission> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
<uses-sdk android:minSdkVersion="7" /> 
</manifest> 
+0

Мы понятия не имеем, почему это так долго, без размещения кода. Надувание изображений должно быть преступником, но мы можем только догадываться. – Falmarri

+0

У вас есть запрос на сетевое задание или базу данных в onCreate()? Если это так, вы можете заполнить свой список с помощью ASyncTask. – Rorist

+0

, взяв дорожку выделения, я получил память eater как «android.app.ApplicationContext $ SharedPreferencesImpl writeFileLocked ApplicationContext.java 2807 false« Как я могу избежать утечки памяти, вызванной этим? – asifkt

ответ

0

Общие рекомендации характеристики:

В большинстве случаев вы не должны пытаться угадать, что вызывает проблемы с производительностью, как интуиция часто ошибаются. Если бы вы знали причину медленного кода, вы бы не написали это медленно, в первую очередь!

  1. Используйте the profiler, чтобы решить, где ваши проблемы с производительностью.
  2. Оптимизируйте только медленные детали. Сохраните копию ваших следов и сравните их после внесения изменений, чтобы вы знали, находитесь ли вы в правильном направлении или нет.
  3. Сделайте свой собственный простой метод синхронизации для проверки ваших результатов, это позволит убедиться, что сама запись трассировки не вызывает проблем с производительностью в другом месте.
+0

Я осмотрел область с низкой производительностью, используя анализатор дорожек. я получил "android.app.ApplicationContext $ SharedPreferencesImpl writeFileLocked ApplicationContext.java 2807 false" является eater памяти. Как я могу избежать этого? – asifkt

+2

Эти советы очень хороши, только если у вас есть ключ к Java в целом. Если базовые знания отсутствуют, ничего не поможет, кроме обучения Java. –

+1

@asifkt - Не беспокойтесь о памяти на данный момент, сосредоточьтесь на времени, затраченном на каждый метод. Начните с самых длинных запущенных методов, затем развернитесь в вызовы функций, которые едят время. @Octavian, вы правы, конечно, но профилирование по-прежнему полезно, оно может научить новичков, как писать быстрые программы. –

Смежные вопросы