相关疑难解决方法(0)

Android:EditText导致内存泄漏

我想首先说这是我第一次处理性能,因为这是我第一次开发Android应用程序.

该应用程序

该应用程序是一个源代码编辑器,您可以在其中打开文件,修改它们并将其保存回来.该应用程序由4部分组成:

  • 导航器视图:包含打开文件的ListView和打开文件夹的TreeView.
  • 代码视图容器:这包含包含实际代码的视图.
  • 代码容器:这是一个包含文本视图和自定义EditText的小视图(由我扩展EditText类创建,但它尚未实现,因此它的行为与EditText完全相同).TextView只显示代码行.
  • 打开和保存片段:我使用了两个片段作为DialogFragment:保存片段允许您导航本地文件系统以及链接帐户的Dropbox文件系统并保存当前文件.open片段允许您导航相同的文件系统并打开文件.

问题

完成基本代码编辑器后,我转到语法高亮.现在,我想明确表示即使没有语法突出显示也会产生泄漏,所以这不是问题所在.

无论如何,通过测试语法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; …

java android memory-leaks

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

android EditText在输入文本时滞后

我正在开发某种聊天应用程序,一切都很顺利,但我遇到了一个问题.EditText滞后,每当我在edittext中输入一些字母时,我的android键盘会在第二次或某些时候被冻结.我真的不知道要提供什么代码,因为它只是一个简单的EditText框.这是我如何做到的:

linforbutton.add(new LinearLayout(this));  //linear layout on the bottom os creen for edittext and button
    RelativeLayout.LayoutParams params =
      new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
      LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    linforbutton.get(x).setLayoutParams(params);
    linforbutton.get(x).setBackgroundColor(0xff426193);
    linforbutton.get(x).setOrientation(LinearLayout.HORIZONTAL);
    int padding_in_dp1 = 3;  
    final float scale1 = getResources().getDisplayMetrics().density;
    int padding_in_px1 = (int) (padding_in_dp1 * scale1 + 0.5f);
    linforbutton.get(x).setPadding(0, 0, 0, 0); 
    relmsg.get(x).addView(linforbutton.get(x));
    msginput.add(new EditText(this));
    msginput.get(x).setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f));
    msginput.get(x).setMaxLines(3);
    msginput.get(x).setMinLines(1);
    msginput.get(x).setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
    msginput.get(x).setInputType(InputType.TYPE_TEXT_FLAG_MULTI_LINE);
    msginput.get(x).setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
    msginput.get(x).setImeOptions(EditorInfo.IME_ACTION_SEND);
    msginput.get(x).setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION);
    linforbutton.get(x).addView(msginput.get(x));
    btninput.add(new Button(this));
    btninput.get(x).setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    btninput.get(x).setText("????.");
    int padding_in_dp2 = 20;  
    final float scale2 = getResources().getDisplayMetrics().density;
    int padding_in_px2 = (int) …
Run Code Online (Sandbox Code Playgroud)

java android lag android-edittext

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

标签 统计

android ×2

java ×2

android-edittext ×1

lag ×1

memory-leaks ×1