显示来自服务的 Toast 通知

Showing a Toast notification from a service

我有一个监控前台应用程序的后台服务。它用于保护某个应用程序,如果受保护的应用程序在前台,然后因为另一个应用程序启动而被推到后台,它会向用户显示另一个应用程序已接管为前台应用程序的通知。

我能够检测到开关,但是有什么方法可以显示 Toast notification/AlertDialog 以在检测到后提醒服务中的用户?

您可以在 Service class 中获取应用程序基础上下文并使用 Handler 显示祝酒词。

private Context appContext;

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        appContext = getBaseContext();        //Get the context here
    }

    //Use this method to show toast
    void showToast(){
        if(null != appContext){
        Handler handler = new Handler(Looper.getMainLooper());
        handler.post(new Runnable() {
            @Override
            public void run() 
            {
               Toast.makeText(appContext, "Printing Toast Message", Toast.LENGTH_SHORT).show();
            }

        });

        }
    }

这样试试

final Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                 Toast.makeText(getBaseContext(), "TEST", Toast.LENGTH_SHORT).show();

               handler.postDelayed(this, 1000);
                }
            },1000);

您可以使用 Handler 获取主循环程序。试试下面的片段

Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable(){
@Override
public void run(){
 Toast.makeText(YourServiceName.this,"your   message",Toast.LENGHT_SHORT).show();
 }
});