Я хотел бы знать, может ли ведение журнала снизить производительность приложения? Кроме того, пожалуйста, дайте мне несколько советов по увеличению производительности приложений Android.
Снижает ли слишком много записей в журнале производительность приложений Android?
Ответы (3)
да. Чрезмерное ведение журнала влияет на производительность любого приложения, а не только Android.
В руководстве для разработчиков предлагается деактивировать и отключить ведение журнала перед выпуском:
Отключите ведение журнала и отладку Перед сборкой приложения для выпуска обязательно отключите ведение журнала и параметр отладки. Вы можете деактивировать ведение журнала, удалив вызовы методов журнала в исходных файлах. Вы можете отключить отладку, удалив атрибут android:debuggable из тега в файле манифеста или установив для атрибута android:debuggable значение false в файле манифеста. Кроме того, удалите все файлы журналов или статические тестовые файлы, которые были созданы в вашем проекте.
Кроме того, вам следует удалить все вызовы трассировки отладки, которые вы добавили в свой код, такие как вызовы методов startMethodTracing() и stopMethodTracing().
Таким образом, вы должны подавить журналы в «выпускной» или «производственной» сборке вашего приложения.
Отключите его в манифесте Android, настроив параметр debuggable:
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="false">
Другой способ
Создайте свой собственный класс регистратора и проверьте режим отладки перед выполнением log. Это позволяет выполнять одноточечную модификацию между режимом отладки и развернутым приложением, а также позволяет выполнять дополнительные действия, например запись в файл журнала.
import android.util.Log;
public class MyLog {
private static final boolean isDebug = false;;
public static void i(String tag, String msg) {
if (isDebug) {
Log.i(tag, msg);
}
}
public static void e(String tag, String msg) {
if (isDebug) {
Log.e(tag, msg);
}
}
}
Для получения дополнительной информации прочитайте http://rxwen.blogspot.com/2009/11/logging-in-android.html
и SO QA:
Log.d и влияние на производительность
Ведение журнала Android: как очистить для повышения производительности
используйте оператор if перед записью журнала.
вы можете отключить журнал при выпуске приложения.
пример :
public class LogTest extends Activity {
private static final String TAG = "YOUR_LOG_TAG_NAME";
private static final boolean mDebug = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//--[Start Log example]-----------------------------------------
if(mDebug) Log.d(TAG, "Log Write Test");
//--[End Log example]-----------------------------------------
}
}
Любой избыточный текстовый вывод замедлит ваше приложение, даже с настольным приложением. Чрезмерное ведение журнала замедляет работу, но в основном вам потребуется безумное количество передаваемых данных, что, кстати, не так уж сложно сделать с помощью цикла for или while. Вещи, которые иногда происходят в фоновом режиме во время ведения журнала, включают манипуляции со строками, рендеринг текста, управление кешем, фильтрацию данных, ограничение длины журнала, и этот список можно продолжить.
Есть несколько способов удалить logcat из вашего окончательного приложения, особенно те, которые связаны с ProGuard. ProGuard мне не помог, но есть много блестящих идей о том, как их удалить, включая программы-скрипты, такие как sed.