谷歌玻璃的记忆

时间:2015-03-25 12:13:51

标签: android google-glass

我使用蓝牙客户端 - 服务器通信将数据从Android手机发送到谷歌眼镜。多次运行代码后,我释放了GC_FOR_ALLOC ......垃圾收集问题 而且谷歌玻璃的记忆几乎已满, 这是我认为问题的原因的while循环

private void manageConnectedSocket(BluetoothSocket socket) {


      while(socket.isConnected()) {
          try {
              BufferedReader   input = new BufferedReader(new InputStreamReader(socket.getInputStream()));

              mResult = input.readLine();
              prev=mResult;
              if(!prev.equals(next)){
              System.out.println("result=" + mResult);
              /** PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
               //out.println(Integer.parseInt(mResult)+50);
               out.println(mResult);**/

              runOnUiThread(new Runnable() {
                  public void run() {
                      mTvInfo.setText(mResult);
                      next=prev;    }
              });
              }
              //  socket.close();
             // manageConnectedSocket(socket);
          } catch (IOException e) {
              final IOException ex = e;
              runOnUiThread(new Runnable() {
                  public void run() {
                      mTvInfo.setText(ex.getMessage());
                  }
              });
          }
      }

请,我需要一种清理Google Glass内存的方法

1 个答案:

答案 0 :(得分:0)

由于android使用Linux内核,你可以坚持执行命令的传统方法,以便从谷歌眼镜中释放一些内存。

但是在看了你的代码之后,你正在执行while循环中的所有后台任务并将其显示在同一循环中的UI线程上。这实际上是一项昂贵的操作,也可能导致Google Glass的升温。我建议你更改代码,以便所有后台任务在Async Task线程中单独进行,然后在postexecute()方法中显示活动数据。

以下是示例代码。

private class HttpGetter extends AsyncTask<URL, Void, Void> {

                @Override
                protected Void doInBackground(URL... urls) {
                        // TODO Auto-generated method stub
                        StringBuilder builder = new StringBuilder();
                        HttpClient client = new DefaultHttpClient();
                        HttpGet httpGet = new HttpGet(urls[0]);

                        try {
                                HttpResponse response = client.execute(httpGet);
                                StatusLine statusLine = response.getStatusLine();
                                int statusCode = statusLine.getStatusCode();
                                if (statusCode == 200) {
                                        HttpEntity entity = response.getEntity();
                                        InputStream content = entity.getContent();
                                        BufferedReader reader = new BufferedReader(
                                                        new InputStreamReader(content));
                                        String line;
                                        while ((line = reader.readLine()) != null) {
                                                builder.append(line);
                                        }
                                        Log.v("Getter", "Your data: " + builder.toString()); //response data
                                } else {
                                        Log.e("Getter", "Failed to download file");
                                }
                        } catch (ClientProtocolException e) {
                                e.printStackTrace();
                        } catch (IOException e) {
                                e.printStackTrace();
                        }

                        return null;
                }
    }

HttpGetter get = new HttpGetter();
get.execute("http://www.google.es");