调用从PCL到android的方法 - Xamarin

时间:2017-11-17 16:07:56

标签: c# xamarin

如何将Integer#/项目中定义的方法调用到PCL项目?

我在我的PCL中定义了一个方法Android,我希望这个方法能够在我的android项目中定义的服务中连续运行,如下所示:

DoWork()

吐司正在出现。 但是,public class BroadcastService : Service { IBinder mBinder; [return: GeneratedEnum] public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId) { Toast.MakeText(this, "BroadcastService is running ", ToastLength.Long).Show(); Task.Run(() => { var counter = new Counter(); counter.DoWork().Wait(); }); base.OnStartCommand(intent, flags, startId); return StartCommandResult.Sticky; } 未运行。有人可以启发有什么问题吗?

DoWork()的完整方法签名:

DoWork()

1 个答案:

答案 0 :(得分:1)

我认为您可以使用MessagingCenter。你可以试试这样的东西

公共类BroadcastService:服务 {     IBinder mBinder;

[return: GeneratedEnum]
public override StartCommandResult OnStartCommand(Intent intent, [GeneratedEnum] StartCommandFlags flags, int startId)
{

    Toast.MakeText(this, "BroadcastService is running ", ToastLength.Long).Show();

    Xamarin.Forms.MessagingCenter.Send<App>((App)Xamarin.Forms.Application.Current, "dowork");


    base.OnStartCommand(intent, flags, startId);
    return StartCommandResult.Sticky;

}

并在您的PCL项目中

    protected override void OnStart()
    {
        MessagingCenter.Subscribe<App>(this, "dowork", (sender) =>
        {
            // Do something here

        });
        // Handle when your app starts
    }