我的应用程序正在记录文本信息,我使用的技术基于嵌入ScrollView的TextView,其中包含完整的字符串。
这种方法的真正缺点是随着时间的推移,字符串变得非常大,如果不是崩溃,你可以体验到的最好的是性能下降,因为系统是outOfMemory。
我可以使用的其他技术是什么?
以下是我提出的代码:
public class MainActivity extends AppCompatActivity {
boolean run = true;
String str = "", t;
int i = 0;
TextView txt;
ScrollView sv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = (TextView) findViewById(R.id.txt);
Button btn = (Button) findViewById(R.id.btn);
sv = (ScrollView) findViewById(R.id.sv);
t = "this is the log for monday the 24th of july 2017 - number ";
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
start();
}
});
}
private void start(){
new Timer().schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
i++;
str = str + t + i + "\n";
txt.setText(str);
sv.fullScroll(ScrollView.FOCUS_DOWN);
}
});
}
}, 0, 100);
}
}
和布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.narb.log.MainActivity">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Start"
/>
<ScrollView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_below="@id/btn"
>
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is the log number"
android:layout_margin="15dp"
/>
</ScrollView>
</RelativeLayout>
答案 0 :(得分:1)
取代 str = str + t + i +“\ n”; 和 txt.setText(str);
尝试使用 str = t + i +“\ n”; 和 txt.setText(txt.getText()+ str);
或者你也可以简单地使用 txt.setText(txt.getText()+ t + i +“\ n”);