我有一个广播接收器,如果打开或关闭 GPS ,则显示祝酒词。我只是想知道为什么只要 GPS 保持开启就不会连续显示吐司。 请在下面找到我使用的代码。
public class gpsbroad extends BroadcastReceiver implements LocationListener{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
LocationManager mlocManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean enabled = mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (enabled==true) {
Toast.makeText(context, "gps on",
Toast.LENGTH_SHORT).show();
//Intent pushIntent = new Intent(context, LocalService.class);
//context.startService(pushIntent);
}
else
{
Toast.makeText(context, "gps off",
Toast.LENGTH_SHORT).show();
}
if (intent.getAction().matches("android.location.PROVIDERS_CHANGED")) {
Toast.makeText(context, "in android.location.PROVIDERS_CHANGED",
Toast.LENGTH_SHORT).show();
//Intent pushIntent = new Intent(context, LocalService.class);
//context.startService(pushIntent);
}
}
答案 0 :(得分:0)
BroadcastReceiver
“唤醒”当有Intent
它有兴趣接收时。它将执行onReceive()
中的代码,就是这样。实际上,除此之外,就系统而言,它也可能被破坏。
BroadcastReceiver对象仅在通话期间有效 to onReceive(Context,Intent)。一旦你的代码从此返回 功能,系统认为要完成的对象不再 活性
Toast
只能在有限时间内显示Toast.LENGTH_SHORT
或Toast.LENGTH_LONG
。实际上,这些是您可以指定的唯一持续时间。
将两者放在一起,结果就是当你得到你想要的意图时,你会看到屏幕上弹出一条简短的信息。简而言之,只要GPS打开,您的代码就无法使Toast(或其他任何内容)保留在屏幕上。我建议您查看NotificationManager
,但我真的不明白这一点 - 手机无论如何都会在系统状态栏中显示GPS图标。