我将代码部署到iOS后一段时间,手机挂起

时间:2017-08-05 17:23:04

标签: xamarin xamarin.forms

有什么方法可以跟踪Xamarin发生的事情吗?我用我的手机的目标进行调试,然后它挂断了。我无法做任何事情,无法通过侧面的按钮将其关闭,只需按下侧面的按钮和主页按钮即可让手机再次工作。在iPhone 6s Plus上运行。

以下是我怀疑可能导致问题的一些代码。还想知道是否有人可以看到任何可能导致代码问题的内容:

public partial class App : Application
{

    public static DataManager db;
    private static Stopwatch stopWatch = new Stopwatch();
    private const int defaultTimespan = 1;

    public App()
    {
        InitializeComponent();
    }

    public static DataManager DB
    {
        get
        {
            if (db == null)
            {
                db = new DataManager();
            }
            return db;
        }
    }


    protected override void OnStart()
    {
        App.DB.InitData();
        MainPage = new Japanese.MainPage();

        if (!stopWatch.IsRunning) 
            stopWatch.Start();

        Device.StartTimer(new TimeSpan(0, 0, 1), () =>
        {
            if (stopWatch.IsRunning && stopWatch.Elapsed.Minutes >= defaultTimespan)
            {
                Debug.WriteLine("Checking database");
                PointChecker.CheckScore();
                stopWatch.Restart();
            }
            return true;
        });
    }

    protected override void OnSleep()
    {
        Debug.WriteLine("OnSleep");
        stopWatch.Reset();
    }

    protected override void OnResume()
    {
        Debug.WriteLine("OnResume");
        // deductPoints();
        stopWatch.Start();
    }

}

2 个答案:

答案 0 :(得分:1)

iOS要求在初次首次加载时设置所有内容,时间为17秒。这意味着您必须在App构造函数中设置MainPage,而不能在OnStart中设置它。

或者,你可以放置MainPage = new ContentPage();在你的App构造函数中,它将在OnStart中被替换。但是,您必须在构建应用程序时设置MainPage。

Android和UWP我认为,给你一些自由,你可以在OnStart中设置它,但绝对不是iOS。

答案 1 :(得分:1)

当我将调试器连接到正在运行的应用程序并且该连接中断时,我的iPhone挂机。例如,如果在Visual Studio调试时拔下防雷电缆 - 手机将挂起。
因此,尝试从手机启动您的应用程序(不附带调试器)并检查您的数据库。