Android 有关对象创建和初始化的几个问题



ApiClient.getClient().create( ApiInterface.class)一直被称为重新创建Retrofit客户端。这需要花费,并且应该只发生一次。(这同样适用于回收器视图)。我认为应该使用单例..还有我如何在安卓工作室中找到创建了多少对象......任何帮助。这是我的代码:

public void fetchData() {
          ApiInterface apiService =
                  ApiClient.getClient().create(ApiInterface.class);
          Call<List<Currency>> call = apiService.getData("");
          if (isNetworkAvailable()) {
              call.enqueue(new Callback<List<Currency>>() {
                  @Override
                  public void onResponse(Call<List<Currency>> call, Response<List<Currency>> response) {
                      if (response.isSuccessful()) {
                          List<Currency> rew = response.body();
                          if(( moduloLoop % 2) == 0 ) {
                          for (int i =0; i < rew.size(); i++){
                                  mBuy.add(i, String.valueOf(rew.get(i).getBuy())+","+i);
                                  mSell.add(i, String.valueOf(rew.get(i).getSell())+","+i);
                                  mSharePreference.saveArray(MainActivity.this, mBuy,"BuyValue");
                            mSharePreference.saveArray(MainActivity.this, mSell,"SellValue");
                              }
                              mSell.clear();
                              mBuy.clear();
                          }
                          if( !isTablet){
                              recyclerView.setAdapter(new CurrencyAdapter(response.body(), R.layout.list_item_trade, MainActivity.this));
                          }else {
                              recyclerView.setAdapter(new CurrencyAdapter(response.body(), R.layout.tablet_list_item_trade, MainActivity.this));
                          }
                      } else {
                      alertError(MainActivity.this.getString(R.string.DownloadFailed));
                      }
                  }
                  @Override
                  public void onFailure(Call<List<Currency>> call, Throwable t) {
                      alertError(t.getMessage()+"");
                  }
              });
          }else {
              alertError(this.getString(R.string.network_unavailable));
           }
      }
// Trying to create a polling mechanism to update rates every couple of //seconds.
Handler h = new Handler();
private static final int DELAY = 25000;
        Runnable runnable;
        @Override
        protected void onStart() {
            h.postDelayed(new Runnable() {
                public void run() {
                    fetchData();
                    runnable = this;
                    moduloLoop++;
                    h.postDelayed(runnable, DELAY);
                }
            }, DELAY);
            super.onStart();
        }
    public class ApiClient {
        private static final String BASE_URL = "http://massignment.xxxxx.com/api/";
        private static Retrofit retrofit = null;
        public static Retrofit getClient() {
            if (retrofit==null) {
                retrofit = new Retrofit.Builder()
                        .baseUrl(BASE_URL)
                        .addConverterFactory(GsonConverterFactory.create())
                        .build();
            }
            return retrofit;
        }
    }
    public interface ApiInterface {
        @GET("rates")
        Call<List<Currency>> getData(@Query("") String values);
    }

要查看创建了多少对象,请执行以下操作:

  1. 在手机或模拟器上以调试模式运行应用。
  2. 转到"安卓监视器"选项卡。
  3. 单击监视器选项卡。
  4. 单击"转储堆"图标。

在此之后,编辑器中将出现一个新选项卡,其中包含所有内存使用情况信息。

https://developer.android.com/studio/profile/am-memory.html

祝你好运! :-)

最新更新