Android UI在真实手机上运行缓慢但在模拟器

时间:2017-05-02 22:23:51

标签: java android performance

对于求职者群体来说是新手,但是从这个资源中得到了无数的答案。

我刚刚在业余时间开始进行Android开发(已知Java十年),我有这个应用程序有一个我似乎无法弄清楚的问题。

我的手机在我的手机上非常慢(LG G3),但在模拟器中,它运行时很平滑。对于长时间运行的代码,我使用异步和off-ui线程的正确用法进行代码设置。

我甚至禁用了我的一个设置开关,什么都不做,而且我的手机上移动滑块的速度仍然很慢。

我认为这可能不是代码问题,但作为一个新手,我不做任何假设。

到目前为止,这是我的故障排除列表。

  • 从我正在测试的交换机中删除功能
  • 添加许多调试注释以查看某处是否存在循环
  • 从手机中手动卸载应用程序并使用新设置重新安装

无论如何,这里的活动会引发许多编舞警告。 (删除了导入和变量声明以保存字符)

  private void save() {
    Log.v(TAG, "Invoke save()");
    SharedPreferences sharedPreferences = getSharedPreferences(getString(R.string.SettingsLibraryName), Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean(getString(R.string.showButtons), showButtons);
    editor.putBoolean(getString(R.string.lightBackground), lightBackground);
    editor.putBoolean(getString(R.string.enableNotifications), enableNotifications);
    editor.putBoolean(getString(R.string.debugMode), debugMode);
    editor.putBoolean("enableSchedule", enableSchedule);
    editor.putInt(getString(R.string.foregroundRefreshInterval), foregroundRefreshInterval);
    Log.d(TAG, "fri=" + String.valueOf(foregroundRefreshInterval));
    Log.d(TAG, "bri=" + String.valueOf(backgroundRefreshInterval));
    editor.putInt(getString(R.string.backgroundRefreshInterval), backgroundRefreshInterval);
    editor.putInt(getString(R.string.fri_seekPosition), fri_seekBarPosition);
    editor.putInt(getString(R.string.bri_seekPosition), bri_seekBarPosition);
    editor.putInt("onImageIndex", selectedOnImage);
    editor.putInt("offImageIndex", selectedOffImage);
    editor.putInt("statusImageCounter", selectedImageSet);
    editor.putInt("toMonth", toMonth);
    editor.putInt("fromMonth", fromMonth);
    editor.apply();
  }


  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.v(TAG, "Invoke onCreate()");

    //Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar2);
    //setSupportActionBar(toolbar);
    loadSettings();
    Log.v(TAG, "showButtons: " + String.valueOf(showButtons) + " lightbackground: " + String.valueOf(lightBackground) + " notifications: " + String.valueOf(enableNotifications));
    //showButtons = ((MainActivity)ctx).showButtons;

    //lightBackground = ((MainActivity)ctx).lightBackground;
    setContentView(R.layout.activity_settings);
    //layoutId = R.layout.activity_settings;
    initializeObjects();
    configureObjects();
    startupObjectListeners();
    setDisplayColors();
    //Log.v(TAG, String.valueOf(layoutId));
    Log.v(TAG, String.valueOf(showButtons));

  }

  private void configureObjects() {
    Log.v(TAG, "Invoke configureObjects()");
    offImagePreview.setImageResource(selectedOffImage);
    lightBackgroundSwitch.setChecked(lightBackground);
    enableNotificationsSwitch.setChecked(enableNotifications);
    showButtonsSwitch.setChecked(!showButtons);
    onImagePreview.setImageResource(selectedOnImage);
    debugSwitch.setChecked(debugMode);
    fri_seekBar.setProgress(fri_seekBarPosition);
    bri_seekBar.setProgress(bri_seekBarPosition);
    toMonth_seekBar.setProgress(toMonth - 1);
    fromMonth_seekBar.setProgress(fromMonth - 1);
    showMonth_Text(toMonth, toMonthSelectTitle, false);
    showMonth_Text(fromMonth, fromMonthSelectTitle, true);
    showFRI_Text(fri_seekBarPosition);
    showBRI_Text(bri_seekBarPosition);


    try {
      String versionString = "Version: " + getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
      Log.d(TAG, getPackageManager().getPackageInfo(getPackageName(), 0).packageName);
      Log.d(TAG, getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
      versionNumberTextBox.setText(versionString);
    } catch (PackageManager.NameNotFoundException e) {
      e.printStackTrace();
    }
  }

  private void loadSettings() {
    Log.v(TAG, "Invoke loadSettings()");
    sharedPreferences = getSharedPreferences(getString(R.string.SettingsLibraryName), Context.MODE_PRIVATE);
    showButtons = sharedPreferences.getBoolean(getString(R.string.showButtons), true);
    lightBackground = sharedPreferences.getBoolean(getString(R.string.lightBackground), false);
    enableNotifications = sharedPreferences.getBoolean(getString(R.string.enableNotifications), true);
    debugMode = sharedPreferences.getBoolean(getString(R.string.debugMode), false);
    enableSchedule = sharedPreferences.getBoolean("enableSchedule", true);
    selectedOnImage = sharedPreferences.getInt("onImageIndex", R.drawable.power_on_image_1);
    selectedOffImage = sharedPreferences.getInt("offImageIndex", R.drawable.power_off_image_1);
    selectedImageSet = sharedPreferences.getInt("statusImageCounter", 1);
    toMonth = sharedPreferences.getInt("toMonth", 1);
    fromMonth = sharedPreferences.getInt("fromMonth", 1);
    foregroundRefreshInterval = sharedPreferences.getInt(getString(R.string.foregroundRefreshInterval), 0);
    backgroundRefreshInterval = sharedPreferences.getInt(getString(R.string.backgroundRefreshInterval), 0);
    fri_seekBarPosition = sharedPreferences.getInt(getString(R.string.fri_seekPosition), 0);
    bri_seekBarPosition = sharedPreferences.getInt(getString(R.string.bri_seekPosition), 0);


  }

  private void initializeObjects() {
    Log.v(TAG, "Invoke initializeObjects()");
    showButtonsSwitch = (Switch) findViewById(R.id.showButtonsSwitch);
    fromMonth_seekBar = (SeekBar) findViewById(R.id.fromMonth_seekBar);
    toMonth_seekBar = (SeekBar) findViewById(R.id.toMonth_seekBar);
    fri_seekBarText = (TextView) findViewById(R.id.fri_Text);
    bri_seekBarText = (TextView) findViewById(R.id.bri_Text);
    fri_seekBar = (SeekBar) findViewById(R.id.fri);
    bri_seekBar = (SeekBar) findViewById(R.id.bri);
    lightBackgroundSwitch = (Switch) findViewById(R.id.lightBackgroundSwitch);
    enableNotificationsSwitch = (Switch) findViewById(R.id.enableNotificationsSwitch);
    enableScheduleSwitch = (Switch) findViewById(R.id.enableSchedule);
    debugSwitch = (Switch) findViewById(R.id.debugMode);
    displaySettingsTitle = (TextView) findViewById(R.id.displaySettingsTitle);
    imageSetTitle = (TextView) findViewById(R.id.imageSetTitle);
    rightArrow = (TextView) findViewById(R.id.rightArrow);
    leftArrow = (TextView) findViewById(R.id.leftArrow);
    systemSettingsTitle = (TextView) findViewById(R.id.systemSettingsTitle);
    versionNumberTextBox = (TextView) findViewById(R.id.versionNumber);
    fromMonthSelectTitle = (TextView) findViewById(R.id.fromMonthSelectionTitle);
    summerMonthsTitle = (TextView) findViewById(R.id.summerMonthsTitle);
    summerHoursTitle = (TextView) findViewById(R.id.summerHoursTitle);
    toMonthSelectTitle = (TextView) findViewById(R.id.toMonthSelectionTitle);
    onImagePreview = (ImageView) findViewById(R.id.onImagePreview);
    offImagePreview = (ImageView) findViewById(R.id.offImagePreview);
    previewContainer = (LinearLayout) findViewById(R.id.previewContainer);

  }

  private void startupObjectListeners() {
    Log.v(TAG, "Invoke startupObjectListeners()");

    fri_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        showFRI_Text(progress);
      }

      public void onStartTrackingTouch(SeekBar seekBar) {

      }

      public void onStopTrackingTouch(SeekBar seekBar) {

      }
    });

    bri_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        showBRI_Text(progress);
      }

      public void onStartTrackingTouch(SeekBar seekBar) {

      }

      public void onStopTrackingTouch(SeekBar seekBar) {

      }
    });

    fromMonth_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        fromMonth = progress + 1;
        showMonth_Text(progress + 1, fromMonthSelectTitle, true);
      }

      public void onStartTrackingTouch(SeekBar seekBar) {

      }

      public void onStopTrackingTouch(SeekBar seekBar) {

      }
    });

    toMonth_seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        toMonth = progress + 1;
        showMonth_Text(progress + 1, toMonthSelectTitle, false);
      }

      public void onStartTrackingTouch(SeekBar seekBar) {

      }

      public void onStopTrackingTouch(SeekBar seekBar) {

      }
    });


    previewContainer.setOnTouchListener(new OnSwipeTouchListener(getApplicationContext()) {
      @Override
      public void onSwipeRight() {
        previousImage();
      }

      public void onSwipeLeft() {
        nextImage();
      }
    });


  }

  private void showMonth_Text(int month, TextView target, boolean from) {
    Log.v(TAG, "Invoke showMonth_Text()");

    if (from) {
      switch (month) {
        case 1:
          target.setText("From: January");
          break;
        case 2:
          target.setText("From: February");
          break;
        case 3:
          target.setText("From: March");
          break;
        case 4:
          target.setText("From: April");
          break;
        case 5:
          target.setText("From: May");
          break;
        case 6:
          target.setText("From: June");
          break;
        case 7:
          target.setText("From: July");
          break;
        case 8:
          target.setText("From: August");
          break;
        case 9:
          target.setText("From: September");
          break;
        case 10:
          target.setText("From: October");
          break;
        case 11:
          target.setText("From: November");
          break;
        case 12:
          target.setText("From: Decemeber");
          break;
      }
    } else {
      switch (month) {
        case 1:
          target.setText("To: January");
          break;
        case 2:
          target.setText("To: February");
          break;
        case 3:
          target.setText("To: March");
          break;
        case 4:
          target.setText("To: April");
          break;
        case 5:
          target.setText("To: May");
          break;
        case 6:
          target.setText("To: June");
          break;
        case 7:
          target.setText("To: July");
          break;
        case 8:
          target.setText("To: August");
          break;
        case 9:
          target.setText("To: September");
          break;
        case 10:
          target.setText("To: October");
          break;
        case 11:
          target.setText("To: November");
          break;
        case 12:
          target.setText("To: Decemeber");
          break;
      }
    }
  }

  public void toggleSchedule(View v) {
    Log.v(TAG, "Invoke toggleSchedule()");

    enableSchedule = !enableSchedule;
    if (fromMonthSelectTitle.getVisibility() == View.VISIBLE) {
      fromMonthSelectTitle.setVisibility(View.GONE);
    } else {
      fromMonthSelectTitle.setVisibility(View.VISIBLE);
    }
    if (toMonthSelectTitle.getVisibility() == View.VISIBLE) {
      toMonthSelectTitle.setVisibility(View.GONE);
    } else {
      toMonthSelectTitle.setVisibility(View.VISIBLE);
    }
    if (fromMonth_seekBar.getVisibility() == View.VISIBLE) {
      fromMonth_seekBar.setVisibility(View.GONE);
    } else {
      fromMonth_seekBar.setVisibility(View.VISIBLE);
    }
    if (summerMonthsTitle.getVisibility() == View.VISIBLE) {
      summerMonthsTitle.setVisibility(View.GONE);
    } else {
      summerMonthsTitle.setVisibility(View.VISIBLE);
    }
    if (summerHoursTitle.getVisibility() == View.VISIBLE) {
      summerHoursTitle.setVisibility(View.GONE);
    } else {
      summerHoursTitle.setVisibility(View.VISIBLE);
    }

  }

  private void showFRI_Text(int progress) {
    Log.v(TAG, "Invoke showFRI_Text()");
    //float weightedProgress=((300000.0f)/(-1*(progress-3681.63467f)))-81.486f;
    fri_seekBarPosition = progress;
    //progress = ((int) weightedProgress);
    progress = progress / 60;
    int minutes = 0;
    int seconds = progress;
    int hours = 0;
    if (progress > 59) {
      minutes = progress / 60;
      if (minutes > 59) {
        hours = minutes / 60;
        minutes = minutes % 60;
      }
      seconds = progress % 60;
    }

    String message = getString(R.string.fri_text);
    if (hours != 0) {
      message = message + String.valueOf(hours) + " Hours " + String.valueOf(minutes) + " Minutes";
    } else if (minutes != 0) {
      message = message + String.valueOf(minutes) + " Minutes";
    } else if (seconds != 0) {
      message = message + String.valueOf(seconds) + " Seconds";
    } else {
      message = message + " Never";
    }
    foregroundRefreshInterval = progress;
    fri_seekBarText.setText(message);
  }

  private int getStatusImageCount(String searchString) {
    Log.v(TAG, "Invoke getStatusImageCount()");

    int count = 0;
    Field[] fields = R.drawable.class.getFields();
    List < Integer > drawables = new ArrayList < Integer > ();
    for (Field field: fields) {
      // Take only those with name starting with "fr"
      if (field.getName().startsWith(searchString)) {
        count++;
      }
    }
    return count;
  }


  private void showBRI_Text(int progress) {
    Log.v(TAG, "Invoke showBRI_Text()");

    float weightedProgress = ((50000000.0 f) / (-1 * (progress - 23710.0 f))) - 2108.815 f;
    // Log.d(TAG,"weightedProgress="+String.valueOf(weightedProgress));
    bri_seekBarPosition = progress;
    progress = ((int) weightedProgress);
    int minutes = 0;
    int seconds = progress;
    int hours = 0;
    if (progress > 59) {
      minutes = progress / 60;
      if (minutes > 59) {
        hours = minutes / 60;
        minutes = minutes % 60;
      }
      seconds = progress % 60;
    }

    String message = getString(R.string.bri_text);
    if (hours != 0) {
      message = message + String.valueOf(hours) + " Hours " + String.valueOf(minutes) + " Minutes";
    } else if (minutes != 0) {
      message = message + String.valueOf(minutes) + " Minutes";
    } else if (seconds != 0) {
      message = message + String.valueOf(seconds) + " Seconds";
    } else {
      message = message + " Never";
    }
    backgroundRefreshInterval = progress;
    bri_seekBarText.setText(message);
  }


  public void playButtonTickSound() {
    SoundInterface.SoundRunnable sound = new SoundInterface.SoundRunnable(this, "tick");
    sound.run();

  }

  public void toggleShowButtons(View v) {
    //playButtonTickSound();
    showButtons = !showButtons;

    //Log.v(TAG, showButtons.toString());
  }

  public void toggleDebugMode(View v) {
    //playButtonTickSound();
    debugMode = !debugMode;

    //Log.v(TAG, showButtons.toString());
  }

  public void toggleNotifications(View v) {
    //playButtonTickSound();
    enableNotifications = !enableNotifications;

    //Log.v(TAG, enableNotifications.toString());
  }


  public void toggleBackground(View v) {
    //playButtonTickSound();
    //lightBackground = !lightBackground;

    //setDisplayColors();
    //Log.v(TAG, showButtons.toString());
  }


  public void nextImage(View v) {
    nextImage();

  }

  public void nextImage() {
    Log.v(TAG, "Next Image");
    int totalImages = getStatusImageCount("power_on_");
    Log.v(TAG, "Total Images = " + String.valueOf(totalImages));
    Log.v(TAG, "counter = " + String.valueOf(selectedImageSet));
    if (selectedImageSet < totalImages) {
      selectedImageSet++;
    } else {
      selectedImageSet = 1;
    }
    String onImageName = "power_on_image_" + String.valueOf(selectedImageSet);
    String offImageName = "power_off_image_" + String.valueOf(selectedImageSet);

    selectedOnImage = getResources().getIdentifier(onImageName, "drawable", getPackageName());
    selectedOffImage = getResources().getIdentifier(offImageName, "drawable", getPackageName());
    Log.d(TAG, "selectedOnImage ID=" + String.valueOf(selectedOnImage));
    Log.d(TAG, "selectedOffImage ID=" + String.valueOf(selectedOffImage));
    onImagePreview.setImageResource(selectedOnImage);
    offImagePreview.setImageResource(selectedOffImage);

  }

  public void previousImage(View v) {
    previousImage();

  }

  public void previousImage() {
    Log.v(TAG, "Next Image");
    int totalImages = getStatusImageCount("power_on_");
    Log.v(TAG, "Total Images = " + String.valueOf(totalImages));
    Log.v(TAG, "counter = " + String.valueOf(selectedImageSet));
    if (selectedImageSet > 1) {
      selectedImageSet--;
    } else {
      selectedImageSet = totalImages;
    }
    String onImageName = "power_on_image_" + String.valueOf(selectedImageSet);
    String offImageName = "power_off_image_" + String.valueOf(selectedImageSet);

    selectedOnImage = getResources().getIdentifier(onImageName, "drawable", getPackageName());
    selectedOffImage = getResources().getIdentifier(offImageName, "drawable", getPackageName());
    Log.d(TAG, "selectedOnImage ID=" + String.valueOf(selectedOnImage));
    Log.d(TAG, "selectedOffImage ID=" + String.valueOf(selectedOffImage));
    onImagePreview.setImageResource(selectedOnImage);
    offImagePreview.setImageResource(selectedOffImage);

  }

  private void setDisplayColors() {
    /*
    if (lightBackground) {
        findViewById(R.id.settings_container).setBackgroundColor(Color.parseColor("#ffffff"));
        showButtonsSwitch.setTextColor(Color.parseColor("#000000"));
        lightBackgroundSwitch.setTextColor(Color.parseColor("#000000"));
        enableNotificationsSwitch.setTextColor(Color.parseColor("#000000"));
        versionNumberTextBox.setTextColor(Color.parseColor("#000000"));
        displaySettingsTitle.setTextColor(Color.parseColor("#000000"));
        systemSettingsTitle.setTextColor(Color.parseColor("#000000"));
        debugSwitch.setTextColor(Color.parseColor("#000000"));
        fri_seekBarText.setTextColor(Color.parseColor("#000000"));
        bri_seekBarText.setTextColor(Color.parseColor("#000000"));
        leftArrow.setTextColor(Color.parseColor("#000000"));
        rightArrow.setTextColor(Color.parseColor("#000000"));
        imageSetTitle.setTextColor(Color.parseColor("#000000"));
        fromMonthSelectTitle.setTextColor(Color.parseColor("#000000"));
        toMonthSelectTitle.setTextColor(Color.parseColor("#000000"));
        enableScheduleSwitch.setTextColor(Color.parseColor("#000000"));

    } else {
        findViewById(R.id.settings_container).setBackgroundColor(Color.parseColor("#000000"));
        showButtonsSwitch.setTextColor(Color.parseColor("#ffffff"));
        lightBackgroundSwitch.setTextColor(Color.parseColor("#ffffff"));
        enableNotificationsSwitch.setTextColor(Color.parseColor("#ffffff"));
        displaySettingsTitle.setTextColor(Color.parseColor("#ffffff"));
        systemSettingsTitle.setTextColor(Color.parseColor("#ffffff"));
        debugSwitch.setTextColor(Color.parseColor("#ffffff"));
        fri_seekBarText.setTextColor(Color.parseColor("#ffffff"));
        bri_seekBarText.setTextColor(Color.parseColor("#ffffff"));
        rightArrow.setTextColor(Color.parseColor("#ffffff"));
        leftArrow.setTextColor(Color.parseColor("#ffffff"));
        imageSetTitle.setTextColor(Color.parseColor("#ffffff"));
        fromMonthSelectTitle.setTextColor(Color.parseColor("#ffffff"));
        toMonthSelectTitle.setTextColor(Color.parseColor("#ffffff"));
        enableScheduleSwitch.setTextColor(Color.parseColor("#ffffff"));
        versionNumberTextBox.setTextColor(Color.parseColor("#ffffff"));
    }
    */
  }


  public void exitSettings(View v) {
    exitSettings();
  }

  public void exitSettings() {
    save();
    //playButtonTickSound();
    Log.v(TAG, "showButtons: " + String.valueOf(showButtons) + " lightbackground: " + String.valueOf(lightBackground) + " notifications: " + String.valueOf(enableNotifications));
    Intent myIntent = new Intent(getApplicationContext(), MainActivity.class);
    myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    //myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
    //myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    myIntent.putExtra("tk.jacobsen.chris.vapecontrol.MainActivity", true);
    startActivity(myIntent);
    //super.setContentView(R.layout.activity_main);

    //layoutId = R.layout.activity_main;
    // Log.v(TAG, String.valueOf(layoutId));
  }

  @Override
  public void onBackPressed() {
    exitSettings();
    // your code.
  }


}

和logcat。我在日志开始时进入我的设置活动,并在Choreographer警告开始时点击我的测试开关。

05-02 18:00:14.824 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke onCreate()
05-02 18:00:14.824 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke loadSettings()
05-02 18:00:14.824 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: showButtons: false lightbackground: true notifications: true
05-02 18:00:14.878 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke initializeObjects()
05-02 18:00:14.878 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke configureObjects()
05-02 18:00:14.880 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke showMonth_Text()
05-02 18:00:14.880 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke showMonth_Text()
05-02 18:00:14.880 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke showFRI_Text()
05-02 18:00:14.880 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke showBRI_Text()
05-02 18:00:14.881 31627-31627/tk.jacobsen.chris.vapecontrol D/SettingsActivity: tk.jacobsen.chris.vapecontrol
05-02 18:00:14.882 31627-31627/tk.jacobsen.chris.vapecontrol D/SettingsActivity: 1.45
05-02 18:00:14.882 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: Invoke startupObjectListeners()
05-02 18:00:14.882 31627-31627/tk.jacobsen.chris.vapecontrol V/SettingsActivity: false
05-02 18:00:14.950 31627-32222/tk.jacobsen.chris.vapecontrol D/MainActivity: 2017/05/02 15:32:27
05-02 18:00:14.952 31627-32222/tk.jacobsen.chris.vapecontrol V/MainActivity: It is not summer the current month is 4
05-02 18:00:14.953 31627-32222/tk.jacobsen.chris.vapecontrol V/MainActivity: Completed background schedueld task
05-02 18:00:16.175 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 73 frames!  The application may be doing too much work on its main thread.
05-02 18:00:17.283 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 66 frames!  The application may be doing too much work on its main thread.
05-02 18:00:18.571 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 64 frames!  The application may be doing too much work on its main thread.
05-02 18:00:19.723 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 68 frames!  The application may be doing too much work on its main thread.
05-02 18:00:20.559 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 49 frames!  The application may be doing too much work on its main thread.
05-02 18:00:21.564 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 59 frames!  The application may be doing too much work on its main thread.
05-02 18:00:22.338 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 46 frames!  The application may be doing too much work on its main thread.
05-02 18:00:23.281 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 55 frames!  The application may be doing too much work on its main thread.
05-02 18:00:24.031 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 44 frames!  The application may be doing too much work on its main thread.
05-02 18:00:25.134 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 66 frames!  The application may be doing too much work on its main thread.
05-02 18:00:31.340 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 45 frames!  The application may be doing too much work on its main thread.
05-02 18:00:32.389 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 62 frames!  The application may be doing too much work on its main thread.
05-02 18:00:33.211 31627-31627/tk.jacobsen.chris.vapecontrol I/Choreographer: Skipped 48 frames!  The application may be doing too much work on its main thread.

0 个答案:

没有答案