android - android 中的 logcat 显示只是关闭 VM?

标签 android android-emulator garbage-collection stack-trace android-logcat

昨天它运行良好, 但今天显示一条消息 “不幸的是,应用程序已停止”, 并且 logcat 显示“正在关闭虚拟机”。

此应用程序的堆栈跟踪..

11-27 13:24:17.035: W/Trace(806): Unexpected value from nativeGetEnabledTags: 0
11-27 13:24:17.455: W/Trace(806): Unexpected value from nativeGetEnabledTags: 0
11-27 13:24:17.485: W/Trace(806): Unexpected value from nativeGetEnabledTags: 0
11-27 13:24:17.485: D/AndroidRuntime(806): Shutting down VM
11-27 12:30:51.683: D/AndroidRuntime(734): Shutting down VM
11-27 12:30:51.943: D/dalvikvm(734): GC_CONCURRENT freed 137K, 9% free 2625K/2880K,paused23ms+7ms, total 230ms
11-27 12:37:12.259: D/dalvikvm(878): newInstance failed: p0 i0 [0 a1
11-27 12:37:12.259: D/AndroidRuntime(878): Shutting down VM
11-27 12:43:22.839: D/dalvikvm(939): newInstance failed: p0 i0 [0 a1
11-27 12:43:22.878: D/AndroidRuntime(939): Shutting down VM

这是程序..

package com.raghuram.simplecalculator;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

public abstract class CalculatorActivity extends Activity 
{

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);
        OnClickListener addlisten= new OnClickListener()
        {
            public void onClick(View v) 
                {
                    EditText tx1=(EditText) findViewById(R.id.editText1);
                    EditText tx2=(EditText) findViewById(R.id.editText2);
                    EditText tx3=(EditText) findViewById(R.id.editText3);
                    Float res=Float.parseFloat(tx1.getText().toString()) + Float.parseFloat(tx2.getText().toString());                  
                    tx3.setText(Float.toString(res));


                }
        };

        ImageButton a=(ImageButton) findViewById(R.id.imageButton1);
        a.setOnClickListener(addlisten);

        OnClickListener sublisten= new OnClickListener()
        {
            public void onClick(View v) 
                {
                    EditText tx1=(EditText) findViewById(R.id.editText1);
                    EditText tx2=(EditText) findViewById(R.id.editText2);
                    EditText tx3=(EditText) findViewById(R.id.editText3);                   
                    Float res1=Float.parseFloat(tx1.getText().toString()) - Float.parseFloat(tx2.getText().toString());                 
                    tx3.setText(Float.toString(res1));

                }
        };

        ImageButton s=(ImageButton) findViewById(R.id.imageButton2);
        s.setOnClickListener(sublisten);

        OnClickListener mullisten= new OnClickListener()
        {
            public void onClick(View v) 
                {
                    EditText tx1=(EditText) findViewById(R.id.editText1);
                    EditText tx2=(EditText) findViewById(R.id.editText2);
                    EditText tx3=(EditText) findViewById(R.id.editText3);                   
                    Float res1=Float.parseFloat(tx1.getText().toString()) * Float.parseFloat(tx2.getText().toString());                 
                    tx3.setText(Float.toString(res1));

                }
        };

        ImageButton m=(ImageButton) findViewById(R.id.imageButton3);
        m.setOnClickListener(mullisten);

        OnClickListener divlisten= new OnClickListener()
        {
            public void onClick(View v) 
                {
                    EditText tx1=(EditText) findViewById(R.id.editText1);
                    EditText tx2=(EditText) findViewById(R.id.editText2);
                    EditText tx3=(EditText) findViewById(R.id.editText3);
                    Float x=Float.parseFloat(tx2.getText().toString());

                        if(x>0)
                        {
                            Float res1=Float.parseFloat(tx1.getText().toString()) / Float.parseFloat(tx2.getText().toString());                 
                            tx3.setText(Float.toString(res1));
                        }
                        else
                        {

                            Context context = getApplicationContext();
                            CharSequence text = "Invalid number.";
                            int duration = Toast.LENGTH_SHORT;

                            Toast toast = Toast.makeText(context, text, duration);
                            toast.show();

                        }

                }




        };

        ImageButton d=(ImageButton) findViewById(R.id.imageButton4);
        d.setOnClickListener(divlisten);


        ImageButton e=(ImageButton) findViewById(R.id.imageButton5);        
        e.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) 
            {

                System.exit(0);
            }

        });

    }





    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_calculator, menu);
        return true;
    }

}

昨天显示准确结果,现在强行关闭.. 如何管理内存。

最佳答案

删除类名前的abstract

通过调用 finish() 而不是 System.exit(0) 来真正停止您的 Activity 。

关于android - android 中的 logcat 显示只是关闭 VM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579284/

相关文章:

Android HAL 调试 : How to enable logcat

android - 禁用okhttp的缓存

android - 如何使用 android maven 插件在命令行上指定目标设备(或模拟器)?

android - 尝试连接到模拟器时处理卡在 "Waiting for device"

objective-c - 什么时候在 Objective-C 代码中直接使用 objc_memmove_collectable?

android - 如何清除堆栈中的当前 Activity ?

Android 窗口管理器布局膨胀器没有膨胀全屏布局

android - 为什么我不能在 Virtual Box 中添加桥接适配器?

java - 在完成期间引用对象

java - 当这个新的Thread()在Android中被GC时?