Android:完成应用程序/活动后显示吐司

时间:2010-09-13 12:30:34

标签: android toast system.exit

我想在退出应用程序时显示一个简单的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);
}

2 个答案:

答案 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();
    }
};