如何在onStop()或onDestroy()中显示弹出或自定义吐司?

时间:2018-04-27 09:38:01

标签: java android user-interface

我有一个应用程序如何在达到特定时间时发出通知... 当我的应用为onStoponDestroy时,我会显示一些弹出式广告或自定义布局。 我想要这张照片。


(点击放大)

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用Toast(简单直接)。更复杂的方式是,您必须授予2个特殊权限"借助其他应用程序"和" app具有使用权限" (这是特殊权限,因此您需要创建自己的页面以提示用户授予它),之后您可以将自定义视图直接添加到系统的Windows管理器。最后但并非最不重要的一点是,您应该认真思考,如果用户在主屏幕上收到关于 主页被停止或销毁之后的通知有什么好处,因为这违背了系统设计相当多。

答案 1 :(得分:0)

如果您只想发送消息,那么Toast就足够了。

    @override
    public void onStop() {
        Toast.MakeText(context, "Your message here", Toast.LENGTH_LONG).show();
    }

    @override
    public void onDestroy() {
        Toast.MakeText(context, "Your message here", Toast.LENGTH_LONG).show();
    }

编辑:我不建议您在Toast中撰写长信息并将其显示较长时间,而是考虑Statusbar Notification。状态栏通知可以在不再相关时以编程方式取消。

如果您仍想增加Toast消息的持续时间,则此处是一种解决方法。

private Toast mToastToShow;
public void showToast(View view) {
   // Set the toast and duration
   int toastDurationInMilliSeconds = 10000;
   mToastToShow = Toast.makeText(this, "Hello world, I am a toast.", Toast.LENGTH_LONG);

   // Set the countdown to display the toast
   CountDownTimer toastCountDown;
   toastCountDown = new CountDownTimer(toastDurationInMilliSeconds, 1000 /*Tick duration*/) {
      public void onTick(long millisUntilFinished) {
         mToastToShow.show();
      }
      public void onFinish() {
         mToastToShow.cancel();
         }
   };

   // Show the toast and starts the countdown
   mToastToShow.show();
   toastCountDown.start();
}

以下是它的工作原理:倒计时的通知时间短于根据标志显示toast的持续时间,因此如果倒计时没有完成,可以再次显示toast 。如果吐司仍然在屏幕上再次显示,它将在整个持续时间内保持不闪烁。倒计时结束后,即使显示持续时间未结束,也会取消Toast以隐藏它。