显示来自服务的Toast通知
问题描述:
我有一个监视前台应用程序的后台服务。它用于保护某个应用程序,例如,如果受保护的应用程序位于前台,然后由于另一个应用程序启动而推送到后台,则会向用户显示另一个应用程序已经接管为前台应用程序的通知。显示来自服务的Toast通知
我能够检测到交换机,但是有什么方法可以显示Toast通知/ AlertDialog以在检测后在服务中提醒用户?
答
您可以在Service
类中获得应用程序库上下文,并使用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, "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);
答
您可以使用处理程序来获取主尺蠖。尝试下面的snipt
Handler handler = new Handler(Looper.getMainLooper());
handler.post(new Runnable(){
@Override
public void run(){
Toast.makeText(YourServiceName.this,"your message",Toast.LENGHT_SHORT).show();
}
});
在服务中显示警报对话是个坏主意。您需要使用活动上下文来显示。所以从服务导航到活动并显示警报对话框 –
好的,如果我不采用AlertDialog方式,那么Toast或其他形式的通知如何?请注意,接管前台应用程序的活动不属于我。它可能劫持了我的Actitivy – user1118764