.NET Maui Android平台IExecutor接口实现方案咨询
在.NET Maui中正确实现Android的IExecutor接口
你不需要手动实现那些Jni相关的属性和方法——继承Java.Lang.Object后,这些方法已经有默认的正确实现了,你的代码里手动重写并抛出NotImplementedException才是导致运行时异常的原因。
只需要实现IExecutor接口要求的Execute方法即可,其他Jni相关的成员完全不用管。根据你的需求,Execute方法可以选择在主线程(UI线程)或者后台线程执行传入的IRunnable命令:
正确的实现代码
#if ANDROID using Java.Lang; using Java.Util.Concurrent; using Microsoft.Maui.ApplicationModel; namespace CellularSignal1 { public class MauiExecutor : Java.Lang.Object, IExecutor { // 只需要实现IExecutor的核心方法 public void Execute(IRunnable command) { // 选项1:在UI主线程执行(适合更新UI的操作) MainThread.BeginInvokeOnMainThread(() => command.Run()); // 选项2:在后台线程执行(适合耗时操作) // Task.Run(() => command.Run()); } } } #endif
说明
- 移除了所有不必要的Jni相关属性和方法重写,这些由
Java.Lang.Object底层自动处理,不需要手动实现。 Execute方法的两种实现方式:- 如果你的Android函数需要在UI线程执行操作,选择
MainThread.BeginInvokeOnMainThread,避免跨线程UI访问异常。 - 如果是耗时的后台操作,用
Task.Run放到线程池执行。
- 如果你的Android函数需要在UI线程执行操作,选择
这样实现的MauiExecutor就可以正常传递给需要IExecutor参数的Android平台函数,不会再抛出未实现异常。
内容的提问来源于stack exchange,提问作者rickster26ter1
相关产品推荐
相关产品推荐

