如何从任何活动中终止Xamarin应用程序?
我已经尝试了两个System.Environment.Exit(0)和System.Environment.Exit(1)以及Finish()杀死所有活动.
它仍会打开一个包含默认活动名称和黑屏的空白页面.
对此有什么具体的解决方案吗?
Aka*_*min 47
如果您使用的是Xamarin.Forms,请创建一个依赖服务.
接口
public interface ICloseApplication
{
void closeApplication();
}
Run Code Online (Sandbox Code Playgroud)
Android:使用FinishAffinity()不会重新启动您的活动.它只会关闭应用程序.
public class CloseApplication : ICloseApplication
{
public void closeApplication()
{
var activity = (Activity)Forms.Context;
activity.FinishAffinity();
}
}
Run Code Online (Sandbox Code Playgroud)
IOS:如上所述.
public class CloseApplication : ICloseApplication
{
public void closeApplication()
{
Thread.CurrentThread.Abort();
}
}
Run Code Online (Sandbox Code Playgroud)
UWP
public class CloseApplication : ICloseApplication
{
public void closeApplication()
{
Application.Current.Exit();
}
}
Run Code Online (Sandbox Code Playgroud)
用于Xamarin表格
var closer = DependencyService.Get<ICloseApplication>();
closer?.closeApplication();
Run Code Online (Sandbox Code Playgroud)
Jas*_*son 20
对于Android,你可以做到
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
Run Code Online (Sandbox Code Playgroud)
iOS显然不为现有的App提供任何API.只有操作系统可以关闭应用程序.
vho*_*yer 11
使其跨平台工作的一种简单方法是通过以下命令:
System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow();
Run Code Online (Sandbox Code Playgroud)
从这个链接得到它.
编辑:使用它一段时间后,我发现.CloseMainWindow()不要杀死应用程序,只关闭它(好吧,那很明显).如果你想终止app(kill),你应该使用以下内容:
System.Diagnostics.Process.GetCurrentProcess().Kill();
Run Code Online (Sandbox Code Playgroud)
对于iOS,您可以使用以下代码:
Thread.CurrentThread.Abort();
Run Code Online (Sandbox Code Playgroud)
对于Android,正如@Jason在这里提到的:
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
Run Code Online (Sandbox Code Playgroud)
我试过这段代码
protected override bool OnBackButtonPressed()
{
Device.BeginInvokeOnMainThread(async () =>
{
var result = await DisplayAlert("", "Would you like to exit from application?", "Yes", "No");
if (result)
{
if (Device.OS == TargetPlatform.Android)
{
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
}
else if (Device.OS == TargetPlatform.iOS)
{
Thread.CurrentThread.Abort();
}
}
});
return true;
}
Run Code Online (Sandbox Code Playgroud)
在此情况下,当用户选择终止应用程序时,iOS 和 Android 应用程序将关闭。也许它对你有帮助。
| 归档时间: |
|
| 查看次数: |
46797 次 |
| 最近记录: |