如何在停止执行程序后停止Toast消息

时间:2015-03-14 09:30:25

标签: android

public class Home extends ActionBarActivity {
    public static final String PREFS_NAME="LoginPrefs";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);

        ScheduledExecutorService scheduler =
                Executors.newSingleThreadScheduledExecutor();
        scheduler.scheduleAtFixedRate(new Runnable() {

            public void run() {
                Log.i("hello", "world");
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), "Please Enter the Details", Toast.LENGTH_SHORT).show();

                    }
                });

            }
        }, 10, 10, TimeUnit.SECONDS);

    }

3 个答案:

答案 0 :(得分:2)

创建自定义全局对象

private Toast toast;

在onCreate中初始化

toast = Toast.makeText(YOUR_CLASS_NAME.this, "", Toast.LENGTH_SHORT);

每当你需要展示Toast

toast.setText("Text..."); toast.show();

根据onPause或onDestroy

的要求杀死所有消息

toast.cancel();

答案 1 :(得分:0)

您的代码存在的问题是您没有停止调度程序。

当您关闭活动时,应用程序不会停止,以便调度程序继续运行。

您可以重写代码以在活动停止时停止调度程序,并在活动开始时启动调度程序(而不是创建)。

public class MainActivity extends ActionBarActivity {

    private ScheduledExecutorService mScheduler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart() {
        super.onStart();

        mScheduler = Executors.newSingleThreadScheduledExecutor();
        mScheduler.scheduleAtFixedRate(new Runnable() {

            public void run() {
                Log.i("hello", "world");
                runOnUiThread(new Runnable() {
                    public void run() {
                        Toast.makeText(getApplicationContext(), "Please Enter the Details", Toast.LENGTH_SHORT).show();

                    }
                });

            }
        }, 5, 5, TimeUnit.SECONDS);
    }

    @Override
    protected void onStop() {
        mScheduler.shutdown();
        super.onStop();
    }

 }

答案 2 :(得分:-1)

在您的活动中覆盖onBackPressed()方法,将其放置:

System.exit(0);

这基本上用于退出,但这也会停止祝酒。试试这个。