最近遇到一个应用方面的内存问题,没一点解决的思路,希望大家可以讨论一下。
问题描述如下:
在写一个系统设置,其中包括了声音设置,时间设置等,首先用户点系统设置,进入我们的系统设置主界面,然后用户可以在不同的设置之间,进行切换,代码简述如下。
- Java code
public class TimeMainActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //窗口全屏显示 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.layout_time); System.out.println("TimeMainActivity"); InitView(); } private void InitView() { } public void onClick(View v) { // TODO Auto-generated method stub m_event.onClick(v); }}
- Java code
public class VolMainActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 窗口全屏显示 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.layout_vol); System.out.println("VolMainActivity"); InitView(); } private void InitView() { } public void onClick(View v) { // TODO Auto-generated method stub m_event.onClick(v); }}
以上是两个分界面的代码简述,当在两个分界面之间切换时,输出如下log信息。
01-27 02:30:39.520: I/System.out(1328): SetSubActivity
01-27 02:30:39.560: D/dalvikvm(1328): GC_EXTERNAL_ALLOC freed 114K, 48% free 2869K/5447K, external 11932K/12041K, paused 23ms
01-27 02:30:39.710: D/dalvikvm(1328): GC_EXTERNAL_ALLOC freed 29K, 47% free 2917K/5447K, external 13905K/14648K, paused 24ms
01-27 02:30:39.840: D/dalvikvm(1328): GC_EXTERNAL_ALLOC freed 11K, 46% free 2949K/5447K, external 16819K/16848K, paused 23ms
01-27 02:30:39.870: D/dalvikvm(1328): GC_EXTERNAL_ALLOC freed 0K, 46% free 2949K/5447K, external 16819K/16848K, paused 23ms
01-27 02:30:39.900: I/dalvikvm-heap(1328): Clamp target GC heap from 25.628MB to 24.000MB
01-27 02:30:39.900: D/dalvikvm(1328): GC_FOR_MALLOC freed <1K, 46% free 2949K/5447K, external 18833K/20881K, paused 17ms
01-27 02:30:39.990: I/System.out(1328): VolMainActivity
01-27 02:30:43.440: I/System.out(1328): SetSubActivity
01-27 02:30:43.520: D/dalvikvm(1328): GC_EXTERNAL_ALLOC freed 101K, 46% free 3033K/5575K, external 18688K/19986K, paused 24ms
01-27 02:30:43.520: E/dalvikvm-heap(1328): 768912-byte external allocation too large for this process.
01-27 02:30:43.530: E/GraphicsJNI(1328): VM won't let us allocate 768912 bytes
01-27 02:30:43.550: I/dalvikvm-heap(1328): Clamp target GC heap from 25.568MB to 24.000MB
01-27 02:30:43.550: D/dalvikvm(1328): GC_FOR_MALLOC freed 1K, 46% free 3031K/5575K, external 18688K/19986K, paused 16ms
01-27 02:30:43.560: D/AndroidRuntime(1328): Shutting down VM
01-27 02:30:43.560: W/dalvikvm(1328): threadid=1: thread exiting with uncaught exception (group=0x40015560)
01-27 02:30:43.570: E/AndroidRuntime(1328): FATAL EXCEPTION: main
01-27 02:30:43.570: E/AndroidRuntime(1328): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sound.system/sound.activity.TimeMainActivity}: android.view.InflateException: Binary XML file line #49: Error inflating class <unknown>
01-27 02:30:43.570: E/AndroidRuntime(1328): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)