首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出xamarin Profiler中的日志

导出xamarin Profiler中的日志
EN

Stack Overflow用户
提问于 2015-09-02 10:52:12
回答 2查看 244关注 0票数 9

我必须使用xamarin分析器测试一个应用程序。在xamarin分析器中,有任何输出日志的选项吗?可以过滤不需要的日志(系统日志)。以及如何计算从一个活动到另一个活动的应用程序响应时间?有什么可以帮忙的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-13 23:08:05

我不认为有办法输出日志。

关于从一个活动到另一个活动的计数,使用下面的App类实现有用的方法来计算间隔,因为有2个活动

代码语言:javascript
复制
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 ();

    }
}
}

在第二次活动的号召和第二次活动开始之后,用这样的方法来度量时间:呼叫:

代码语言:javascript
复制
DateTime startTime = DateTime.UtcNow;

第二次活动开始后:

代码语言:javascript
复制
TimeSpan elapsedTime = DateTime.UtcNow - startTime; 
票数 2
EN

Stack Overflow用户

发布于 2015-09-13 23:54:42

在xamarin分析器中,有任何输出日志的选项吗?

您可以配置输出路径,然后按CONTROL+S (Windows)或COMMAND+S (OSX)保存快照。

  • 窗口:工具->选项->保存*.mlpds到.
  • OSX:首选项->通用->输出位置

在导出和重新加载来自Xamarin.Profiler的快照时,我一直遇到困难;我不能保证它能像预期的那样工作。

如果您正在查找Xamarin.Profiler应用程序日志,则它们位于:

  • Windows: User-Path/AppData/Local/Xamarin/Log/Xamarin.Profiler
  • OSX:~/Library/Logs/Library./

如何计算从一个活动到另一个活动的应用程序响应时间?

您可以在应用程序中注册IActivityLifecycleCallbacks的实现。下面是一个基本的示例,您可以从下面构建:

代码语言:javascript
复制
[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");
        }
    }
}

这将将日志转储到如下所示的Application输出:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32351187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档