I want to show a simple toast, when exiting an application. The problem is, that the toast is not shown. I assume it is because the acitivity is finished or because of System.exit(0)
, but I don't know how to solve it. Does anyone have a tip? Thanks!!
In my activity I have the following code:
Toast.makeText(this,"Exit application.",Toast.LENGTH_SHORT).show(); exitApp(); public void exitApp (){ App.getInstance().exit(); finish(); }
And the mehod exit in App:
public void exit() { System.exit(0); }
It is advisable that you call finish to close your application rather than calling System.exit(0);
since this approach will kill your application completely.System.exit()
kills your entire process. finish()
just hides, stops and destroys your activity. Your process is still running.
You can just use finish();
to close your activity and this should solve your problem.
http://groups.google.com/group/android-developers/browse_thread/thread/63de8a9cdffa46a3?pli=1
I just fired off a new thread to allow time for the Toast to show before the system process is killed. Check it out:
private Runnable checkForAdBlockRun = new Runnable() { @Override public void run() { boolean blocked = false; try { blocked = AdBlockUtil.areAdsBlocked(); if (blocked) { Log.w(TAG, "Ads are blocked on this device."); adBlockHandler.sendEmptyMessage(0); } } catch (Exception e) { Log.w(TAG, "Could not check for ad blocking", e); } } }; private Handler adBlockHandler = new Handler() { @Override public void handleMessage(Message message) { Toast.makeText(instance, "Can not run this app with adblock on", Toast.LENGTH_LONG).show(); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(3000); } catch (Exception e) { } System.exit(0); } }).start(); } };