mbm29414
mbm29414

Reputation: 11598

Windows 8 Metro/Immersive App - Force Terminate

I'm working on porting an app from iOS to WinRT/8 Metro/8 Immersive/Whatever the current name is.

On iOS, we have the ability to set Application does not run in background to YES to cause the app to actually quit whenever the user leaves the app.

I would like to figure out how to replicate this behavior in WinRT.

  1. Yes, I understand that this is abnormal behavior.
  2. Yes, I have thought this through.
  3. Yes, I have an extremely good reason for doing this.

I'm assuming that during the userLeavingApp event, I would just call Application.Current.Exit(), but I can't seem to find the userLeavingApp event. I thought about using OnSuspending (Handles Me.Suspending) in App.xaml.vb, but that doesn't seem to be called quickly enough for me.

Is there a .NET equivalent of viewWillDisappear or something?

Any ideas? This is an important security characteristic of my app, and I'd hate to have such difficulty in an entire platform due to such a small issue.

Thanks!

Upvotes: 0

Views: 699

Answers (2)

Jim O'Neil
Jim O'Neil

Reputation: 23754

I'm not actually seeing Application.Current.Exit() working in OnSuspending; although as you mention the suspending isn't happening fast enough for you (which is by design). Throwing an exception there didn't work for me either.

There is Window.VisibilityChanged and if I issue Exit/exception there, it does shutdown the app when another app takes over. That said, VisibilityChanged will fire under other circumstances too so not sure if you could cover all the scenarios or rely on them not changing. See here for a bit more context.

To echo @Filip, whose response just popped in, it's highly unlikely you'll pass certification. An Exit() call is tantamount to an exception.

Upvotes: 1

Filip Skakun
Filip Skakun

Reputation: 31724

I don't think your app will pass certification if you call Application.Current.Exit(). If you are really confident this is what you want - I guess it is worth a shot to try. You could though simply unload anything that uses memory/CPU when you exit.

Upvotes: 0

Related Questions