我想首先说这是我第一次处理性能,因为这是我第一次开发Android应用程序.
该应用程序是一个源代码编辑器,您可以在其中打开文件,修改它们并将其保存回来.该应用程序由4部分组成:
完成基本代码编辑器后,我转到语法高亮.现在,我想明确表示即使没有语法突出显示也会产生泄漏,所以这不是问题所在.
无论如何,通过测试语法highlithing,我打开"大"文件(1200行代码),我注意到应用程序变得非常慢,这是显而易见的,因为我正在整理整个文本(我将通过仅突出显示来避免这种情况)可见的文字).这促使我测试应用程序没有语法高度大文件,我发现应用程序变得有点慢,我发现一些内存泄漏发生.
特别是,当我打开一个大文件(1200行代码)时,应用程序需要1秒钟才能在textview中显示代码行,当我输入字符的绘图时速度很慢.此外,每当我键入删除字符时,都会发生内存泄漏.
我试图检查堆(使用MAT),但正如我所说,我没有任何经验,我不知道如何调查这个问题.对不起,我无法上传截图(没有stackoverflow的权限),但我可以报告一些数字:


问题1

细节:

问题2

问题3





问题1:
细节:

问题2:

问题3问题4



从Android设备监视器:


分配的一些部分:
先感谢您
编辑:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/codeScrollView"
android:fillViewport="true">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:background="@drawable/lines_stroke"
android:textColor="@android:color/white"
android:text="@string/first_line"
android:textSize="15dp"
android:gravity="right"
android:paddingLeft="15dp"
android:paddingRight="5dp"
android:id="@+id/edit_code_lines_view"/>
<com.example.green.bachelorproject.customViews.codeEditView.TouchEditText
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/code_stroke"
android:gravity="top"
android:textColor="@android:color/white"
android:textSize="15dp"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:textCursorDrawable="@color/white"
android:id="@+id/edit_code_content_view"/>
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
编辑
好的,我发现了这个问题.如果你看到,每次输入内容时,我都会更新EditText行,因为文本很长(1200行),所以需要一段时间来重新计算它.事情虽然关于那个!我必须找到一种更快的方式来显示代码行.一种选择是为每一行使用一个TextView,这样我只更新需要更改的TextView.但我不知道是否有1200个TextView对象是好的.
package com.example.green.bachelorproject.customViews.codeEditView; …