我想在退出应用程序时显示一个简单的toast。问题是,没有显示吐司。我认为这是因为活动完成或因为System.exit(0)
,但我不知道如何解决它。有人有小费吗?谢谢!
在我的活动中,我有以下代码:
Toast.makeText(this,"Exit application.",Toast.LENGTH_SHORT).show();
exitApp();
public void exitApp (){
App.getInstance().exit();
finish();
}
在App中的mehod退出:
public void exit() {
System.exit(0);
}
答案 0 :(得分:4)
建议您致电完成以关闭应用程序,而不是致电System.exit(0);
,因为此方法会完全终止您的应用程序。 System.exit()
会终止您的整个过程。
finish()
只是隐藏,停止和摧毁你的活动。您的流程仍在运行。
您可以使用finish();
来关闭您的活动,这可以解决您的问题。
http://groups.google.com/group/android-developers/browse_thread/thread/63de8a9cdffa46a3?pli=1
答案 1 :(得分:0)
我刚刚解雇了一个新线程,以便在系统进程被终止之前有时间显示Toast。看看:
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();
}
};