在Xamarin Android中从后台线程获取上下文

时间:2017-08-06 14:27:52

标签: c# android xamarin.android

在我的应用程序中,我需要从后台线程调用alert方法。我需要从后台线程获取Context。在获取上下文时,我收到令牌null错误。这是我的代码

Handler h = new Handler();
        BackgroService.Event += () =>
        {
            Action myAction = () =>
            {
                Dialog dialog = new Dialog(Application.Context);
                Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(Application.Context, Resource.Style.AlertDialog);
                alert.SetTitle("");
                alert.SetMessage("MSG");
                alert.SetPositiveButton(GetString(Resource.String.ok), (senderAlert, args) =>
                {
                    //MyAction
                    dialog.Dismiss();
                });
                dialog = alert.Create();
                dialog.Window.SetType(Android.Views.WindowManagerTypes.ApplicationPanel);
                dialog.Show();


            };
            h.PostDelayed(myAction, 1000);
        };

我正在使用Application.Contextthis也无效。有没有人知道如何正确地做到这一点。

2 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,通过使用WindowManagerTypes作为Toa​​st

来显示来自后台线程的警报
browser.tabs.query({active: true, windowId: browser.windows.WINDOW_ID_CURRENT})
  .then(tabs => browser.tabs.get(tabs[0].id))
  .then(tab => {
    console.info(tab);
  });

答案 1 :(得分:0)

从后台线程调用

RunOnUiThread(() =>
{
    //show the alert here (you can use the keyword 'this')
});