在自己的一个应用程序中,因为程序需要长期运行,发现运行几天或半个月后,发现内存涨得很高。
因为程序使用的东西太多,相机,很多用c、c++写的底层算法库等等。排除了很久,初步认定是TextView的setText()导致的。
为了验证这个问题,然后新建了一个干净的工程,测试代码如下(布局就一个Textview控件):
public class Main2Activity extends AppCompatActivity {
private boolean isActing = false;
private TextView textView;
private Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
if (msg.what == 200) {
long millis = System.currentTimeMillis();
// textView.setText(System.currentTimeMillis() + "");
textView.setText(millis + "");
// textView.setText("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
}
handler.removeMessages(200);