【问题标题】:Xamarin.Forms Background Thread [closed]Xamarin.Forms 后台线程
【发布时间】:2015-02-17 16:51:46
【问题描述】:

我正在尝试让一个非常简单的应用程序运行列出 google 任务。 我有一个 SQLite 本地数据库,我想同步/尝试定期与 Google 的服务器同步。

我想简单地运行一个简单的后台线程,这样它就可以在所有设备上轻松运行。

问题归结为在 PCL 项目 (Xamarin.Forms) 中创建该后台线程 我似乎找不到合适的制作方法。

目前我只有第二个线程这样运行:

    private bool Sync() { //Does stuffs }

    private void SynchronizeData()
    {
        // Repeats sync process every 35s
        Device.StartTimer (new TimeSpan (0, 0, 35), Sync);
    }

    // Is called pretty much when app starts.
    private void StartSynchronizationThread()
    {
        Task.Factory.StartNew(SynchronizeData, 
            CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);
    }

虽然考虑到操作计数真的很低(最坏的情况是测试目的,它会阻塞不到一秒),但无论如何它应该不是什么大问题. (定时器第一次到期) 冻结持续了一分钟......

一旦发生,我几乎可以永远留在应用程序上,而不会出现任何问题。我注意到以下内容出现得很晚:

[艺术] 线程[2,tid=2532,WaitingInMainSignalCatcherLoop,线程*=0xee170800,peer=0x12c00080,"信号 捕手”]:对信号 3 做出反应 [艺术] 将堆栈跟踪写入 '/data/anr/traces.txt' [art] 将堆栈跟踪写入 '/data/anr/traces.txt' [艺术] 线程[2,tid=2532,WaitingInMainSignalCatcherLoop,线程*=0xee170800,peer=0x12c00080,"信号 捕手”]:对信号 3 做出反应 [艺术] 将堆栈跟踪写入 '/data/anr/traces.txt'

不过,痕迹并没有真正给我更多信息…… 但这可能与它有关。

任何人都暗示这件事?包,代码示例或任何东西? 希望我错过了一些大事;

谢谢。

【问题讨论】:

    标签: multithreading xamarin sync background-thread


    【解决方案1】:

    在实际设备上的工作就像一个魅力,问题与模拟器有关。 (虽然还没有找到解决办法)

    【讨论】:

      【解决方案2】:

      在 Xamarin 表单中,您必须使用本机来执行适当的后台任务,如下所述: Backgrounding with Xamarin Forms

      要转为原生,您需要使用Xamarin MessagingCenter 将消息来回发送到适当的后台任务(取决于您要实现的目标)。例如,在 Android 中定义一个服务:

      [Service]
      class YourService : Service
      {
          public override IBinder OnBind(Intent intent)
          {
              return null;
          }
      
          public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
          {
              // Do your thang!
          }
      }
      

      【讨论】:

      • 感谢您的回复,不幸的是,在您回答之前我已经做了一段时间,无法尝试您的解决方案,但如果出现这种情况,我会确保尝试一下: P 希望这可以引导其他人走上正确的道路;D
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多