university - Exportar los registros en xamarin Profiler
xamarin university (2)
Tengo que probar una aplicación usando xamarin profiler. En xamarin profiler, ¿hay alguna opción para exportar los registros? y es posible filtrar los registros no deseados (registros del sistema). y cómo calcular el tiempo de respuesta de la aplicación de una actividad a otra? cualquier ayuda es apreciada?
En xamarin profiler, ¿hay alguna opción para exportar los registros?
Puede configurar la ruta de salida y luego presionar CONTROL + S (Windows) o COMANDO + S (OSX) para guardar la captura.
- Windows: Herramientas-> Opciones-> Guardar * .mlpds para ...
- OSX: Preferencias-> General-> Ubicación de salida
Siempre he tenido dificultades para exportar y volver a cargar las instantáneas de Xamarin.Profiler; No puedo garantizar que funcione como se espera.
Si buscas los registros de la aplicación Xamarin.Profiler, se encuentran en:
- Windows: [User-Path] /AppData/Local/Xamarin/Log/Xamarin.Profiler
- OSX: ~ / Library / Logs / Xamarin.Profiler /
¿Cómo calcular el tiempo de respuesta de la aplicación de una actividad a otra?
Puede registrar una implementación de IActivityLifecycleCallbacks
con la aplicación para hacer esto. Aquí hay una muestra rudimentaria de la que puedes construir:
[Application]
public class MyApplication : Application
{
public MyApplication(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer) {
}
public override void OnCreate ()
{
RegisterActivityLifecycleCallbacks(new LifecycleCallbacks());
base.OnCreate ();
}
}
public class LifecycleCallbacks : Java.Lang.Object, Android.App.Application.IActivityLifecycleCallbacks
{
Dictionary<Type, System.Diagnostics.Stopwatch> _lifeTimeTrackers = new Dictionary<Type, Stopwatch>();
public void OnActivityCreated (Activity activity, Bundle savedInstanceState)
{
_lifeTimeTrackers [activity.GetType ()] = Stopwatch.StartNew ();
Event (activity, "created");
}
public void OnActivityDestroyed (Activity activity)
{
Event (activity, "destroyed");
_lifeTimeTrackers.Remove(activity.GetType());
}
public void OnActivityPaused (Activity activity)
{
Event (activity, "paused");
}
public void OnActivityResumed (Activity activity)
{
Event (activity, "resume");
}
public void OnActivitySaveInstanceState (Activity activity, Bundle outState)
{
Event (activity, "save_state");
}
public void OnActivityStarted (Activity activity)
{
Event (activity, "started");
}
public void OnActivityStopped (Activity activity)
{
Event (activity, "stopped");
}
void Event (Activity activity, string eventName)
{
var type = activity.GetType ();
if (_lifeTimeTrackers.ContainsKey (type)) {
Console.WriteLine ("Lifecycle event " + eventName.ToUpper() + " for ''" + type.Name + "'' after " + _lifeTimeTrackers [type].ElapsedMilliseconds + "ms");
}
}
}
Esto descargará un registro en la Salida de aplicación que se ve así:
Lifecycle event STOPPED for ''MainActivity'' after 3789ms
Lifecycle event DESTROYED for ''MainActivity'' after 3789ms
Lifecycle event PAUSED for ''SecondActivity'' after 3121ms
Lifecycle event CREATED for ''MainActivity'' after 0ms
Lifecycle event STARTED for ''MainActivity'' after 7ms
Lifecycle event RESUME for ''MainActivity'' after 7ms
Lifecycle event STOPPED for ''SecondActivity'' after 3568ms
Lifecycle event DESTROYED for ''SecondActivity'' after 3568ms
Lifecycle event PAUSED for ''MainActivity'' after 5918ms
Lifecycle event CREATED for ''SecondActivity'' after 0ms
Lifecycle event STARTED for ''SecondActivity'' after 2ms
Lifecycle event RESUME for ''SecondActivity'' after 2ms
No creo que exista una forma de exportar los registros.
Acerca del conteo de una actividad a otra use la clase de la aplicación a continuación para implementar métodos útiles que cuenten el intervalo porque 2 actividades
using System;
using Android.App;
using Android.Runtime;
namespace Appname
{
[Application]
public class App : Application
{
public App (IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public override void OnCreate ()
{
base.OnCreate ();
}
}
}
En la llamada de la 2ª actividad y después del inicio de la 2ª actividad, mida el tiempo con algo como esto: En la llamada:
DateTime startTime = DateTime.UtcNow;
después del comienzo de la segunda actividad:
TimeSpan elapsedTime = DateTime.UtcNow - startTime;