我正在使用Android的android.graphics.Canvas类来绘制一个环.我的onDraw方法剪切画布为内圈创建一个洞,然后在洞上绘制整个外圈:
clip = new Path();
clip.addRect(outerCircle, Path.Direction.CW);
clip.addOval(innerCircle, Path.Direction.CCW);
canvas.save();
canvas.clipPath(clip);
canvas.drawOval(outerCircle, lightGrey);
canvas.restore();
Run Code Online (Sandbox Code Playgroud)
结果是一个带有漂亮,抗锯齿外边缘和锯齿状,丑陋内边缘的戒指:

我能做些什么来消除内缘?
我不想通过在中间画一个灰色圆圈来欺骗,因为对话框略微透明.(这种透明度在其他背景上并不那么微妙.)
我维护一个库,启动一个守护程序线程在后台工作.在常规Java和Android应用程序中,此线程启动一次并在该进程的生命周期内运行.它永远不会退出,这没关系.
当我的库包含在支持应用程序卸载的应用程序容器(例如Tomcat)中时,应用程序永远不会卸载.我正在运行的线程拥有对其自己的类的强引用,并阻止整个应用程序被卸载.我的库的用户不能热插拔他们的应用程序而不会每次泄漏内存.
当应用程序容器希望卸载我的库时,获取信号的最佳方法是什么?
这是一个小型库,不依赖于应用程序容器API.它不知道它正在运行哪个应用程序容器而且它不想要!
这个库启动一个线程的事实是一个实现细节.库的最终用户不应该知道线程正在启动,并且关闭它不是他们的责任.
Here’s a RFC 2046 multipart octet stream that uses a boundary of "boundary".
--boundary
Content-Type: text/plain; charset="US-ASCII"
abc
--boundary
a
--boundary
--boundary
--boundary
--boundary--
Run Code Online (Sandbox Code Playgroud)
Part 1 is abc\r\n with a trailing CRLF and one header describing its content-type.
第 2 部分a没有标题,也没有尾随换行符。
第 3 部分是空的。
什么是第 4 部分?有第五部吗?
我在我的 API 中使用DeprecationLevel.ERROR:
@Deprecated(
message = "moved to def()",
replaceWith = ReplaceWith(expression = "def()"),
level = DeprecationLevel.ERROR)
fun abc() = def()
Run Code Online (Sandbox Code Playgroud)
我想要一个测试来确保调用者看到这个替换。例如,如果我不小心删除了该abc()方法,我的测试应该无法编译。
但我找不到编译这个的方法:
@Test
@Suppress("something")
fun deprecatedAbc() {
abc()
}
Run Code Online (Sandbox Code Playgroud)
例如,@Suppress("DEPRECATION")不起作用。有什么可以做的吗?