Android Wear App java.lang.OutOfMemoryError:分配失败

时间:2016-03-22 10:20:24

标签: java android gps location wear-os

我遇到了问题。我想为Android Wear设备制作Android应用程序。我想得到我当前位置的纬度和经度。但是当我运行应用程序时,我收到了这个错误:

watchOptions: {
  aggregateTimeout: 600,
  poll: true
},

这是我的代码:

MainActivity.java

03-22 11:14:00.096 29013-29013/? E/AndroidRuntime: Error reporting crash
                                               java.lang.OutOfMemoryError: Failed to allocate a 52435096 byte allocation with 2097152 free bytes and 32MB until OOM
                                                   at java.lang.AbstractStringBuilder.enlargeBuffer(AbstractStringBuilder.java:95)
                                                   at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:125)
                                                   at java.lang.StringBuffer.append(StringBuffer.java:278)
                                                   at java.io.StringWriter.write(StringWriter.java:123)
                                                   at com.android.internal.util.FastPrintWriter.flushLocked(FastPrintWriter.java:358)
                                                   at com.android.internal.util.FastPrintWriter.appendLocked(FastPrintWriter.java:303)
                                                   at com.android.internal.util.FastPrintWriter.write(FastPrintWriter.java:625)
                                                   at com.android.internal.util.FastPrintWriter.append(FastPrintWriter.java:658)
                                                   at java.io.PrintWriter.append(PrintWriter.java:691)
                                                   at java.io.PrintWriter.append(PrintWriter.java:687)
                                                   at java.io.Writer.append(Writer.java:198)
                                                   at java.lang.Throwable.printStackTrace(Throwable.java:324)
                                                   at java.lang.Throwable.printStackTrace(Throwable.java:300)
                                                   at android.util.Log.getStackTraceString(Log.java:343)
                                                   at com.android.internal.os.RuntimeInit.Clog_e(RuntimeInit.java:61)
                                                   at com.android.internal.os.RuntimeInit.-wrap0(RuntimeInit.java)
                                                   at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:86)
                                                   at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
                                                   at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)

}

GPSTracker.java

public class MainActivity extends Activity {

private TextView tvHuidigeLocatie;
private Button btSetHuidigeLocatie;

GPSTracker gps;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {


            onClickInfoButtonListener();
        }
    });
}

private void onClickInfoButtonListener() {
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    tvHuidigeLocatie = (TextView) stub.findViewById(R.id.tvHuidigeLocatie);
    btSetHuidigeLocatie = (Button) stub.findViewById(R.id.btnSetHuidigeLocatie);
    btSetHuidigeLocatie.setOnClickListener(
            new View.OnClickListener(){
                @Override
                public void onClick(View v){
                    gps = new GPSTracker(MainActivity.this);

                    if(gps.canGetLocation()){
                        double latitude = gps.getLatitude();
                        double longitude = gps.getLongitude();

                        tvHuidigeLocatie.setText("" + latitude + ", " + longitude);
                    }else{
                        gps.showSettingsAlert();
                    }
                }
            }
    );
}

}

我希望有人能看到这个问题并帮助我解决这个问题。

1 个答案:

答案 0 :(得分:-1)

 android:largeHeap="true"

在你的Android清单中,希望这能解决你的问题。 http://developer.android.com/guide/topics/manifest/application-element.html#largeHeap