小编Blu*_*ver的帖子

Android推送通知:图标未显示在通知中,而是显示白色方块

我的应用会生成通知,但我没有显示为该通知设置的图标.相反,我得到一个白色方块.

我已经尝试调整图标的大小(尺寸720x720,66x66,44x44,22x22).奇怪的是,当使用较小尺寸时,白色方块较小.

我已经google了这个问题,以及生成通知的正确方法,从我读过的代码应该是正确的.可悲的是,事情并不像他们应该的那样.

我的手机是带有Android 5.1.1的Nexus 5.问题还出现在模拟器,带有Android 5.0.1的三星Galaxy s4和带有Android 5.0.1的摩托罗拉Moto G上(我借用了这两款,现在还没有)

接下来是通知代码和两个屏幕截图.如果您需要更多信息,请随时提出要求.

谢谢你们.

@SuppressLint("NewApi") private void sendNotification(String msg, String title, String link, Bundle bundle) {
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
    resultIntent.putExtras(bundle);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            resultIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
    Notification notification;
    Uri sound = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notificationsound);
    notification = new Notification.Builder(this)
                .setSmallIcon(R.drawable.lg_logo)
                .setContentTitle(title)
                .setStyle(new Notification.BigTextStyle().bigText(msg))
                .setAutoCancel(true)
                .setContentText(msg)
                .setContentIntent(contentIntent)
                .setSound(sound)
                .build();
    notificationManager.notify(0, notification);
}
Run Code Online (Sandbox Code Playgroud)

没有打开通知 通知已打开

notifications icons android

155
推荐指数
14
解决办法
17万
查看次数

如何处理货币的精度和舍入误差?

我从其他 SO 问题中知道的事情:

  • 我必须使用整数或 Java 的 BigDecimal(Java 是我的情况,但问题更广泛),而不是浮点类型。
  • 我必须至少存储比我想显示的小数位多一位。就我而言,我想显示 2 个小数位。约定是在数据库中使用 decimal(19,4) (在我的情况下它是 Postgres,但同样这个问题更广泛)

当我在内存中有 101 件物品的账单,每件物品价值 1.00004999999999999 时,我将所有价值为 1.000049999999999999 美元的 BigDecimals(或所有整数,如果我选择该表示法)相加,计算出的总数为 101.00509.9999 美元,即 1999999999 美元。

如果我在数据库中存储 4 个小数位,每个项目将被四舍五入并存储为 1.0000 美元,当我从数据库中提取它们并将它们相加时,我得到 101.0000 美元,四舍五入为 101.00 美元。

如果我将存储精度提高到十进制(19,5),我需要 1001 个项目而不是 101 个项目才能实现,但这仍然是可能的。它总是可能发生的事情,尽管一种可能的解决方案是将存储精度提高到如此之多,以至于发生这种错误的可能性比闪电击中计算机的可能性要小。

到目前为止,我的解决方案是从不使用 BigDecimal,而是始终使用 BigDecimal.setScale(4),它将其设置为 4 个小数位。你会建议一种不同的方法吗?

我知道行不通的事情:

  • 计算存储后的总数。我需要在用户输入数据时用 JavaScript 计算它。
  • 永远不要使用四舍五入的值进行计算。我不知道如何在不四舍五入的情况下存储它们
  • 从不四舍五入,总是向下。如果我的税值为 1.005049999,则必须显示为 1.01。这是商业规则。我可以挑战它,但必须有一种不影响业务运作方式的方式。

其他注意事项:

  • 我不太关心执行速度或内存使用情况。

java currency

1
推荐指数
1
解决办法
1325
查看次数

标签 统计

android ×1

currency ×1

icons ×1

java ×1

notifications ×1