Xamarin.android 活动上下文的特定强制转换invaild异常

Xamarin.android 活动上下文的特定强制转换invaild异常,xamarin.android,Xamarin.android,使用以下代码关闭应用程序 Context CurrentContext = Android.App.Application.Context; public void CloseByFinish() { var activity = (Activity)CurrentContext; activity.FinishAffinity(); } 获取特定强制转换无效异常 使用xamarin 2.5 特定强制转换对活动的上下文无效异常

使用以下代码关闭应用程序

   Context CurrentContext = Android.App.Application.Context;

    public void CloseByFinish()
    {
        var activity = (Activity)CurrentContext;

        activity.FinishAffinity();

    }
获取特定强制转换无效异常 使用xamarin 2.5

特定强制转换对活动的上下文无效异常

无法将Android.App.Application.Context转换为活动,如下图所示,它们是不同的类型

As

FinishAffinity不用于关闭应用程序。它用于从当前任务中删除属于特定应用程序的多个活动,这些活动可能包含属于多个应用程序的活动

即使您完成了应用程序中的所有活动,托管应用程序的操作系统进程也不会像您调用System.exit时那样自动消失。安卓系统最终会在你的进程开始运行时终止你的进程。你无法控制这一切,这是故意的

建议: 您可以使用以下代码关闭应用程序:

private void CloseApp()
{
    Java.Lang.JavaSystem.Exit(0);// Close this app process
    Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
}
更新: 如果在活动中使用FinishAffinity,请按如下方式修改代码:

public void CloseByFinish()
{
    this.FinishAffinity();
}

关闭应用程序更简单的方法是Environment.Exit0;然后,您就不需要再处理强制转换等问题了。您可以使用系统或Java程序集进行环境调用。您能再显示一些代码吗?在关闭应用程序启动的后台服务之前。这些代码是Java.Lang.JavaSystem.Exit0;//关闭此应用程序进程Android.OS.process.KillProcessAndroid.OS.process.MyPid;将关闭应用程序后台服务???@swapnillwakchaure,是的。因此,您只需完成项目中的所有活动,服务仍在运行?@SwapnilWakchaure,我已经更新了我的答案,您可以检查一下。Forms.Context在xamarin.Forms 2.5中已过时