Mono for Android Widget教程

时间:2012-11-03 18:59:18

标签: c# android

是否有任何使用Mono for Android(C#)创建简单主屏幕小部件的教程?在官方网站上只有一个小部件的代码,没有教程。我想做的就是在窗口小部件中写入一些文本并每隔x更新一次文本。

1 个答案:

答案 0 :(得分:0)

当您设置updatePeriodMillis属性值时,无法保证您的onUpdate方法完全被调用,您必须处理AlarmManager。

https://github.com/xamarin/monodroid-samples/tree/master/SimpleWidget开始,将onUpdate替换为:

private PendingIntent service = null;  

    public override void OnUpdate (Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
    {
        //// To prevent any ANR timeouts, we perform the update in a service
        //context.StartService (new Intent (context, typeof (UpdateService)));

        AlarmManager m = (AlarmManager) context.GetSystemService(Context.AlarmService);

       Intent i = new Intent (context, typeof (UpdateService));

       if (service == null)
       {
           service = PendingIntent.GetService(context, 0, i, PendingIntentFlags.CancelCurrent);
       }

       m.SetRepeating(AlarmType.Rtc, 0, 1000 * 3, service);
    }

然后在服务中:

WordEntry entry = new WordEntry() { Title = "test", Description = DateTime.Now.ToLongTimeString() };

小部件将每3秒刷新一次。

希望这有帮助。