android 中止应用程序,如何终止Xamarin应用程序?
如何终止Xamarin应用程序?
如何从任何活动中终止Xamarin应用程序?
我已经尝试了System.Environment.Exit(0)和System.Environment.Exit(1)以及Finish()并杀死了所有活动。
仍然会打开一个空白页面,其中包含默认活动名称和黑屏。
有什么针对性的解决方案吗?
Nik asked 2020-08-06T01:07:33Z
12个解决方案
45 votes
如果您使用的是Xamarin.Forms,请创建一个依赖服务。
接口
public interface ICloseApplication
{
void closeApplication();
}
Android:使用FinishAffinity()无法重启您的活动。 它将仅关闭应用程序。
public class CloseApplication : ICloseApplication
{
public void closeApplication()
{
var activity = (Activity)Forms.Context;
activity.FinishAffinity();
}
}
iOS:如上所述。
public class CloseApplication : ICloseApplication
{
public void closeApplication()
{
Thread.CurrentThread.Abort();
}
}
超人
public class CloseApplication : ICloseApplication
{
public void closeApplication()
{
Application.Current.Exit();
}
}
Xamarin形式的用法
var closer = DependencyService.Get();
closer?.closeApplication();
Akash Amin answered 2020-08-06T01:08:00Z
19 votes
对于Android,您可以
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
iOS明确不为现有应用提供任何API。 只有操作系统可以关闭应用程序。
Jason answered 2020-08-06T01:08:24Z
10 votes
使它跨平台工作的一种简单方法是通过以下命令:
System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow();
从此链接得到它。
编辑:使用了一段时间后,我发现2998733080694894883328不会杀死该应用程序,只会关闭它(很明显)。 如果要终止应用程序(杀死),则应使用以下命令:
System.Diagnostics.Process.GetCurrentProcess().Kill();
vhoyer answered 2020-08-06T01:08:53Z
9 votes
对于iOS,您可以使用以下代码:
Thread.CurrentThread.Abort();
对于Android,如@Jason在此处提及:
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
IdoT answered 2020-08-06T01:09:18Z
4 votes
在您的活动中,使用此代码
this.FinishAffinity();
Lee Yeong Guang answered 2020-08-06T01:09:37Z
2 votes
System.Diagnostics.Process.GetCurrentProcess().Kill();
M. Hamza Rajput answered 2020-08-06T01:09:53Z
1 votes
上述答案的简单的多合一组合,而不是接口/依赖关系:
protected override bool OnBackButtonPressed()
{
Device.BeginInvokeOnMainThread(async () =>
{
var result = await this.DisplayAlert("Alert!", "want to exit?", "Yes", "No");
if (result)
{
#if __ANDROID__
var activity = (Android.App.Activity)Forms.Context;
activity.FinishAffinity();
#endif
#if __IOS__
Thread.CurrentThread.Abort();
#endif
}
});
return true;
}
AhHatem answered 2020-08-06T01:10:13Z
1 votes
我尝试了这段代码
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;
}
在这种情况下,当用户选择终止应用程序时,iOS和Android应用程序将关闭。 也许对您有帮助。
Nitika Chopra answered 2020-08-06T01:10:37Z
1 votes
System.Environment.Exit(0); 为我工作
Dwight answered 2020-08-06T01:10:57Z
0 votes
正如您最初的问题提到活动一样,您的问题专门针对Android,因此您应该牢记这一点来更新问题标题,以避免有人在这里寻找跨平台的解决方案。
对于iOS和Android(例如Xamarin Forms),您可以抛出一个异常,该异常是“繁重的工作”方法,可以完成此工作:
throw new Exception();
由于这不是最佳的用户体验,因此您可能只想在iOS上使用它,因为在Android上,您可能会看到系统弹出窗口,告诉您应用程序已崩溃。 但是,与其他iOS方法(例如通过选择器调用exit(0)或调用私有iOS方法(例如“ terminateWithSuccess”))不同,它不应仅根据您的操作方式使应用商店验证失败。 他们可能仍然无法使您失败,因为您的应用程序试图自行终止。
您可能想为Android实施一些不同的事情,在这种情况下,Jason的回答就足够了。
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
无论哪种方式,您都应该真正质疑为什么需要提供此选项。 与桌面应用程序不同,桌面应用程序需要关闭应用程序,因为应用程序驻留在窗口中,而这些应用程序在设计上允许进行多任务处理,而不是面向任务,因此,移动平台的主要目的是让用户一次专注于一项任务。 用户完成任务后,应决定通过单击主屏幕按钮,后退按钮或更改应用程序(任务)按钮来退出此任务。 这确实适用于所有平台。
Daniel Maclean answered 2020-08-06T01:11:37Z
0 votes
当我尝试从活动B关闭Xamarin Android应用程序并同时在其下打开活动A时,上述方法都没有帮助我完全关闭Xamarin Android应用程序。
一个聪明的家伙在这里留下了诡计
在活动B中首先致电private void CloseBtn_Click(object sender, EventArgs e){
FinishAffinity();
JavaSystem.Exit(0);
}(关闭两个活动,但是,该应用程序仍在后台运行)
然后调用private void CloseBtn_Click(object sender, EventArgs e){
FinishAffinity();
JavaSystem.Exit(0);
}杀死后台应用程序(我认为可以将其替换为Android.OS.Process.KillProcess(Android.OS.Process.MyPid());或System.Diagnostics.Process.GetCurrentProcess().Kill();)
我关闭应用程序的方法:
private void CloseBtn_Click(object sender, EventArgs e){
FinishAffinity();
JavaSystem.Exit(0);
}
user3480038 answered 2020-08-06T01:12:15Z
0 votes
这些都不适用于Android8。它们都将应用程序保留在后台。我可以通过按关闭所有按钮来证明这一点,并且该应用程序仍然存在。
为了进行测试,我使用了一个全新的简单Android应用程序,并尝试了所有答案。
GaryP answered 2020-08-06T01:12:39Z
android 中止应用程序,如何终止Xamarin应用程序?相关推荐
- 关于xxl-job终止任务但程序没有停止的问题
1.问题的现象 在使用XXL-JOB的时候,使用XxlJob注解创建了一个任务,计算任务的运行时间需要十多分钟,中途用户修改了计算任务的配置,需要重新进行一次计算,使用XXL-JOB的终止任务, ...
- 使用Dotfuscator保护你的Xamarin应用程序
老实说,发布一个库.桌面应用程序或移动应用程序可能有点吓人.一旦你的软件可以免费提供给世界,你就失去了如何使用它的某种程度的控制权.特别是,开发人员经常担心逆向工程的威胁. 在许多平台和语言中,代码混 ...
- 《Android移动应用基础教程》(Android Studio)(第二版)黑马程序员 课后习题答案
<Android移动应用基础教程>(Android Studio)(第二版)黑马程序员 课后习题答案 目录 第1章 Android基础入门 第2章 Android常见界面布局 第3章 An ...
- Android:销毁所有的Activity退出应用程序几种方式
Android:销毁所有的Activity退出应用程序几种方式 author:DRC工作室 我们都知道,Activity是存放在栈中.在默认的情况下(standard)Activity在栈中是以先进后 ...
- android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》
2019独角兽企业重金招聘Python工程师标准>>> 看世界杯的空闲 时间,翻译一下 官方文档.分辨率 问题是大家都很关心的(720×480会不会悲剧),而关于这个问题,andro ...
- 所有java程序都有线程_若所有的用户线程都终止了,Java程序就会结束。( )_学小易找答案...
[单选题]关于链表结构,陈述错误的是 . [单选题]下列关于构造方法的特点的描述中,错误的是 . [判断题]在构造方法中如调用 super() 语句,则必须使其成为构造方法中的第一条语句. [单选题] ...
- Android字体占有内存,android随意创建字体对象引发的应用程序运行时占用内存过大...
android随意创建字体对象引发的应用程序运行时占用内存过大 在实际开发android项目过程中,由于是初次设置android系统没有的字体,所以用到了一个外部文件FounderFineRoundS ...
- 从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库)
从零开始学Xamarin.Forms(四) Android 准备步骤(添加第三方Xamarin.Forms.Labs库) 原文:从零开始学Xamarin.Forms(四) Android 准备步骤(添 ...
- Android 关于长按back键退出应用程序的实现
Android 关于长按back键退出应用程序的实现 最近在做一个Android上的应用,碰到一个问题就是如何实现长按back键退出应用程序.在网上查找了很多资料,发现几乎没有这样的实现,大部分在处理 ...
最新文章
- 【怎样写代码】工厂三兄弟之抽象工厂模式(六):扩展案例II
- MPB:山大倪金凤组-白蚁肠道木质纤维素降解细菌的分离与培养
- 乐享计算机会计学院,EMBA
- Docker windows 安装MySql和Tomcat
- 怎样呵护友谊_怎样呵护友谊(作文)
- CentOS学习笔记(一):中文语言包及输入法的安装使用
- MySQL探秘(二):SQL语句执行过程详解
- 2017-2018 Northwestern European Regional Contest (NWERC 2017)
- 衡量文章词汇复杂度Type Token Ratio (TTR)
- caas k8s主控节点如何查询_k8s中部署prometheus监控告警系统prometheus系列文章第一篇...
- 6.Swoole WebSocket
- 解决@media screen (自适应)IE浏览器不兼容问题
- matlab在xrd中的应用,XRD物相分析(Jade软件的应用).pdf
- Java 运行环境安装(JRE JDK 区别)
- python蒙特卡洛模拟return_python蒙特卡洛脚本模拟—挑战者号爆炸概率
- 你怎么保存微博中喜欢的视频
- nexus 启动报错 The nexus service was launched, but failed to start
- 05流量管理原理-3金丝雀TCP流量整形比例分配
- vasp 模拟退火_【转】vasp的分子动力学模拟 - 第一原理 - 小木虫 - 学术 科研 互动社区...
- 如何将视频文件中的音频提取出来?