所以基本上我在 xamarin 上使用 C# 创建了一个应用程序,一切都运行完美。我调用了一个事件处理程序,当我按下 Android 上的后退按钮时,它不会退出应用程序,只是将其移动到后台。为此,我使用了:
public override void OnBackPressed()
{
MoveTaskToBack(true);
}
现在我希望,如果用户想通过从任务中滑动来终止应用程序,我希望它在关闭之前执行代码。我做了一些研究,发现我应该使用类似的东西:
public override void OnTaskRemoved( )
{
//the code here
}
问题是,当我编写上面的代码时,我收到一条错误消息“错误 CS0115 'MainActivity.OnTaskRemoved(Intent)':找不到合适的方法来覆盖”
如果我删除覆盖,则不会出现错误,但当应用程序通过滑动被杀死时,我放入的代码不会执行。有人可以帮忙吗?谢谢
将 Android 服务添加到您的项目并覆盖OnTaskRemoved
method:
[Service(Label = "TaskEndService")]
[IntentFilter(new String[] { "com.sushihangover.TaskEndService" })]
public class TaskEndService : Service
{
IBinder binder;
public override StartCommandResult OnStartCommand(Android.Content.Intent intent, StartCommandFlags flags, int startId)
{
return StartCommandResult.NotSticky;
}
public override IBinder OnBind(Intent intent)
{
binder = new TaskEndServiceBinder(this);
return binder;
}
public override void OnTaskRemoved(Intent rootIntent)
{
Log.Info("SO", $"{GetType().Name} just got killed....");
base.OnTaskRemoved(rootIntent);
}
}
public class TaskEndServiceBinder : Binder
{
readonly TaskEndService service;
public TaskEndServiceBinder(TaskEndService service)
{
this.service = service;
}
public TaskEndService GetTaskEndService()
{
return service;
}
}
当您的应用程序启动时启动服务,或使用启动完成并使其sticky
如果需要的话,等等...:
StartService(new Intent(this, typeof(TaskEndService)));
然后,当有人从最近的应用程序列表中删除您的应用程序(滑动或关闭窗口点击)时,OnTaskRemoved
被叫。在此示例中,仅记录事件:
05-04 19:31:27.635 3690 3690 I SO : TaskEndService just got killed....
05-04 19:31:27.636 543 909 I ActivityManager: Killing 3690:com.sushihangover.service_exit_foo/u0a83 (adj 1001): remove task
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)