所以基本上我在xamarin上使用C#创建了一个应用程序,一切都运行完美。我打电话给一个事件处理程序,当我按下Android上的按钮时,它会退出应用程序,但它只是在背景上移动它。为此我用过:
public override void OnBackPressed()
{
MoveTaskToBack(true);
}
现在我希望如果用户想要通过从任务滑动来杀死应用程序我希望它在关闭之前执行代码。我做了一些研究,发现我应该使用类似的东西:
public override void OnTaskRemoved( )
{
//the code here
}
问题在于,当我写上面的代码时,我得到一个错误说"错误CS0115' MainActivity.OnTaskRemoved(意图)':找不到合适的方法来覆盖"
如果我删除覆盖,则没有错误,但是当使用滑动杀死应用程序时,我放入的代码不会被执行。有人可以帮忙吗?感谢
答案 0 :(得分:1)
向项目添加Android服务并覆盖Single-line cell 1: bold text: [Bold]
Rich Text cell 3: bold text: [Bold]
Rich Text cell 4: bold text: [Bold00]
Rich Text cell 4: bold text: [Bold01]
方法:
OnTaskRemoved
在您的应用启动时启动服务,或者使用启动完成并在需要时将其设为[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