Android Kotlin代表内存使用
在设计android聊天应用程序时,使用Kotlin委托创建了几个类。这些类经常在类之间使用和传递;所以,我想问一下,在一个这样的例子中,拥有这样的类结构的内存使用情况 使用Kotlin委托的具体类ImageMessage:Android Kotlin代表内存使用,android,kotlin,Android,Kotlin,在设计android聊天应用程序时,使用Kotlin委托创建了几个类。这些类经常在类之间使用和传递;所以,我想问一下,在一个这样的例子中,拥有这样的类结构的内存使用情况 使用Kotlin委托的具体类ImageMessage: open class ImageMessage( image: AppImage, val timestamp: Long ) : AppImage by image 这是ImageMessage中使用的AppImage接口: interface AppI
open class ImageMessage(
image: AppImage,
val timestamp: Long
) : AppImage by image
这是ImageMessage中使用的AppImage接口:
interface AppImage {
var firebaseStorageUrl: String
val image: Bitmap
}
在聊天应用程序中,存在2个集合:一个是实现AppImage的匿名对象列表,另一个是借助匿名类创建的ImageMessages列表
有点像这样:
val image = object : AppImage{...}
imagesList.add(image)
val imageMessage = ImageMessage(image, System.currentTimeInMillis())
imageMessageList.add(imageMessage)
问题:此实现是否会导致存储2个位图图像,或者有一个位图对象链接两次?看到新的语法让我在回答问题时犹豫不决;所以,我请求你的帮助 在将其解压缩到Java时,请看一看。首先,ImageMessage实现AppImage并重写方法
getFirebaseStorageUrl
和getImage
返回值取决于AppImage
。所以这意味着只会创建一个位图实例并通过图像实例
public class ImageMessage implements AppImage {
private final long timestamp;
// $FF: synthetic field
private final AppImage $$delegate_0;
public final long getTimestamp() {
return this.timestamp;
}
public ImageMessage(@NotNull AppImage image, long timestamp) {
Intrinsics.checkParameterIsNotNull(image, "image");
super();
this.$$delegate_0 = image;
this.timestamp = timestamp;
}
@NotNull
public String getFirebaseStorageUrl() {
return this.$$delegate_0.getFirebaseStorageUrl();
}
public void setFirebaseStorageUrl(@NotNull String var1) {
Intrinsics.checkParameterIsNotNull(var1, "<set-?>");
this.$$delegate_0.setFirebaseStorageUrl(var1);
}
@NotNull
public Bitmap getImage() {
return this.$$delegate_0.getImage();
}
}
firebaseStorageUrl和image由AppImage实现
open class ImageMessage(
abc: AppImage,
val timestamp: Long
) : AppImage by abc
这类ImageMessage通过委托实现AppImage,但本质上,与上面显式实现AppImage的ImageMessage相同
备注:我只是更改了委托的名称以帮助您理解。在我看来,它们是相同的对象,只有方法被重写并传输到委托的对象。但完全不确定
open class ImageMessage(
abc: AppImage,
val timestamp: Long
) : AppImage by abc