2012-02-12 5 views
1

ライブタイルを頻繁に更新する方法を検討しています。たとえば、5分ごとなどです。バックグラウンドエージェントを使用してライブタイルを更新する

私は以前にプッシュ通知を使用しましたが、今回はそれらを避けたいと思います。

ShellTileSheduleは1時間に1回しか更新されません。

5分ごとに実行され、サーバーから取得した情報でタイルを更新するバックグラウンドエージェントを使用することを考えています。

14日間の有効期限を除いて、これで落とし穴がありますか?

どのように人々は通常、14日間の有効期限を過ぎるのですか?

5分ごとに数行のテキストをダウンロードしてサービスに問い合わせると、実際にバッテリーが消耗しますか?

編集:このようなタスクのバックグラウンドエージェントは、30分ごとに更新されますか、これには方法がありますか、それともより良い解決策ですか?

ありがとうございました。

答えて

1

バックグラウンドタスクが電話で実行されるタイミングは、いくらか制限されています。また、複数のタスクを同時に実行することができれば、タスクのスケジュールされた時間を移動させるので、電話機を2回起きさせる必要がありません。タイルを5分ごとに更新したい場合は、プッシュ通知が唯一のオプションです。しかし、ユーザーが実際に定期的に情報を見るかどうかは、おそらく考慮する必要があります。

私は中途半端なアプローチをとっています - 私はPeriodicTaskを使用して、OSが許可するようにシェルタイルを更新しますが、アプリケーションが起動すると最新の情報でタイルを手動で更新します。これにより、ユーザはタイルデータを「強制」し、ユーザがアプリケーションを終了した後にさらに現実的なデータを提供することができる。

14日間の有効期限を過ぎるには、アプリケーションの起動ごとにバックグラウンドタスクを再登録してください。それは14日を押し続けるでしょう。これは、未使用のアプリケーションが貴重なリソースを使用するのを防ぐためのものです。ユーザーがアプリケーションを起動している場合、バックグラウンドエージェントを実行したいと思うかもしれません。そうでない場合は、[設定]> [アプリケーション]> [バックグラウンドタスク](またはアンインストールすることで、明らかに)で無効にすることができます。タスクを登録するには、初期化コードで次のように実行します。

PeriodicTask task = ScheduledActionService.Find("MyTaskName") as PeriodicTask; 
    if ((task != null) && (task.IsEnabled == true)) { 
    ScheduledActionService.Remove("MyTaskName"); 
    } 

    task = new PeriodicTask("MyTaskName") { 
    Description = "My Periodic Task", 
    }; 
    ScheduledActionService.Add(task); 

#if DEBUG 
    if (System.Diagnostics.Debugger.IsAttached == true) { 
    ScheduledActionService.LaunchForTest("MyTaskName", TimeSpan.FromSeconds(10)); 
    } 
#endif 

#if DEBUGあなたがまっすぐにテストシナリオの実行後にタスクをスケジュールすることができます。

0

これは非常に古い質問ですが、それでも誰かの時間を節約する可能性があります。 thisの記事によると、Update(shellTileData)を呼び出すたびに、タイルの有効期限が2週間延長されます。だから私が理解する限り、これはあなたのアプリがタスクを再登録せずに永久にタイルを更新できることを意味します。

関連する問題