Tag: 内存泄漏

Google地图视图泄漏非常多

我以前使用过MapFragment,但是我的需求很慢。 MapView几乎是即时的,完全符合我的需求。 但是他们都有一个共同点: 巨大的内存泄漏。 我已经“销毁”了MapView,就像我应该退出活动时那样,它仍然会泄漏。 MapView处于一个频繁打开和关闭的活动,并且会再次快速打开。 这可能是问题吗? 这里是我的hprof文件的一些screeenshots(我宁愿不上传hprof文件,由于可能的敏感信息): 我有多个泄漏,他们指向相同的类。 但是,我正在使用一个自定义的类,这个时候不需要,我将恢复到默认的MapView。

代码审查最好的方法使用SharedPreferences解决MemoryLeak

我尝试解决共享偏好使用中的内存泄漏,我整天尝试这样做,但仍然混淆,我的目标是可能调用pref在任何我想要的。 在这里我的代码。 class Preferences (private val context: Context) { private val sharedPreferences: SharedPreferences = context.getSharedPreferences(context.packageName+”_pref”, Context.MODE_PRIVATE) private val editor: SharedPreferences.Editor companion object { private val KEY_USER = “user” private val KEY_EMAIL = “email” } init { editor = sharedPreferences.edit() } private fun isKeyExist(Key: String): Boolean = sharedPreferences.contains(Key) private fun putString(Key: String, value: String) { editor.putString(Key, […]

在Kotlin的对象字段中带有上下文的Android类

在Kotlin的对象类中有一个属性,它有一个上下文吗? 在Android中,将上下文相关的对象放在静态字段中是一个不好的做法。 Android工作室甚至突出显示它,并给出了一个警告,不像Kotlin没有警告。 示例对象: object Example { lateinit var context: Context fun doStuff(){ //..work with context } }

内存泄漏在Java中,但不是在Kotlin(相同的代码库)…为什么?

我在下面的活动中有一段简单的代码 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); valueAnimator.setRepeatCount(ValueAnimator.INFINITE); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { } }); valueAnimator.start(); } } 如果活动终止,将会有内存泄漏(经泄漏金丝雀certificate)。 但是,当我把这个代码转换成相同的Kotlin代码(使用shift-alt-command-k)时,它如下 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f) valueAnimator.repeatCount […]

在Android的静态相当于kotlin,以避免处理程序内存泄漏

当我在使用java之前在Android中使用处理程序时,我会得到一个Android Studio lint消息,说我应该使用静态处理程序,否则会发生内存泄漏。 由于Kotlin没有静态关键字,我应该如何处理? 这是我的class级: class TaskDetailActivity : AppCompatActivity() { private val handlerComment = MyOptionMenuBarHandler(this) private fun setUpToolBar() { handlerComment.sendEmptyMessage(0) } private class MyOptionMenuBarHandler(activity: TaskDetailActivity) : Handler() { private val activity: WeakReference = WeakReference(activity) override fun handleMessage(msg: Message) { //do the work ….. } } } 有什么特别的我需要做,以避免使用Kotlin的内存泄漏?

库使用Kotlin检测android中的内存泄漏

我正在使用泄漏金丝雀,以防止Android的内存泄漏 …使用Kotlin,这个库仍然工作? 还有另外一个Kotlin? 泄漏金丝雀可以根据源代码( 我是对的? ), 头部笨拙 ,从活动/片段传递到异步类的构造函数来检测,以及在用户离开活动时WeakReference没有正确使用的情况下当Async没有完成它的过程时,LeakCanary检测到内存泄漏。 它如何为Kotlin工作? 泄漏金丝雀是基于(其分析)生成的字节码 ,使用Java代码或Kolin之间真的没有区别?