6

アプリケーションを終了するときに、簡単なトーストを表示したい。問題は、トーストが表示されないことです。活動が終了したためか、 のためSystem.exit(0)だと思いますが、解決方法がわかりません。誰にもヒントがありますか?ありがとう!!

私の活動では、次のコードがあります。

Toast.makeText(this,"Exit application.",Toast.LENGTH_SHORT).show();
exitApp();

public void exitApp (){
  App.getInstance().exit();
  finish();
}

そして、アプリのメソッド終了:

public void exit() {
   System.exit(0);
}
4

2 に答える 2

4

この方法ではアプリケーションが完全に強制終了されるため、アプリケーションを終了するには、を呼び出すのではなく、finish を呼び出すことをお勧めしますSystem.exit(0);System.exit()プロセス全体を強制終了します。 finish()あなたの活動を隠し、停止し、破壊するだけです。プロセスはまだ実行中です。

を使用finish();してアクティビティを閉じることができ、これで問題が解決するはずです。

http://groups.google.com/group/android-developers/browse_thread/thread/63de8a9cdffa46a3?pli=1

于 2010-09-13T12:59:49.360 に答える
0

システムプロセスが強制終了される前にトーストが表示される時間を確保するために、新しいスレッドを起動しました。見てみな:

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();
    }
};
于 2011-06-03T08:38:00.573 に答える