为什么 AlertDialog 放到 while 里就不能显示了?

申祷无 申祷无 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
加格式太麻烦,想看高亮请看这个:
https://segmentfault.com/q/1010000010380701

我调试过了,确实执行到 showAlertDialog(context); 了,我在 logcat 里看到了。代码是这样的:
if (pm.isScreenOn()) {
Log.v("remind", "show alert");
showAlertDialog(context);
}
在下面那个不能显示的情况下有时候好像会一下子显示出来很多。因为一个对话框只有很少的阴影,因为前面说的那种情况阴影很多,所以可能有很多。然后在这种情况下点击屏幕就没反应了,奇怪的是点击菜单、主页、返回有反应。

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" >
</uses-permission>

BroadcastReceiver mScreenStateReceiver = new ScreenStateReceiver();
IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_USER_PRESENT);
registerReceiver(mScreenStateReceiver, screenStateFilter);
下面的不会显示:

public class ScreenStateReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

while(true) {
try {
Thread.sleep(3 * 1000);
} catch (Exception e) {
System.out.println("Error: " + e);
}
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);

if(pm.isScreenOn()) {
showAlertDialog(context);
}
else
return;
}
}

public void showAlertDialog(Context context) {
AlertDialog.Builder builder;
builder = new AlertDialog.Builder(context, android.R.style.Theme_Material_Dialog_Alert);
builder.setTitle("提醒")
.setMessage("你正在看的东西有用吗?")
.setPositiveButton("有用", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// continue with delete
}
})
.setNegativeButton("没用", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(android.R.drawable.ic_dialog_alert);
AlertDialog alert = builder.create();
alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alert.show();
}
}
下面这样就能显示了:

public void onReceive(Context context, Intent intent) {
try {
Thread.sleep(3 * 1000);
} catch (Exception e) {
System.out.println("Error: " + e);
}
showAlertDialog(context);
}
...全文
评论 3
收藏 已收藏
分享
返回顶部
申祷无
Android 80,490 成员 91,375 内容