歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java類中打印this導致手機不能啟動問題

Java類中打印this導致手機不能啟動問題

日期:2017/3/1 10:12:27   编辑:Linux編程

問題1:發現在Handler中加類似Log.d(TAG,"create handler 1 "+ this);導致系統不能啟動。

  1. public class Handler {
  2. public Handler() {
  3. if (FIND_POTENTIAL_LEAKS) {
  4. final Class<? extends Handler> klass = getClass();
  5. if ((klass.isAnonymousClass() || klass.isMemberClass() || klass.isLocalClass()) &&
  6. (klass.getModifiers() & Modifier.STATIC) == 0) {
  7. Log.w(TAG, "The following Handler class should be static or leaks might occur: " +
  8. klass.getCanonicalName());
  9. }
  10. }
  11. mLooper = Looper.myLooper();
  12. if (mLooper == null) {
  13. throw new RuntimeException(
  14. "Can't create handler inside thread that has not called Looper.prepare()");
  15. }
  16. mQueue = mLooper.mQueue;
  17. Log.d(TAG,"create handler 1 "+ this); //本行代碼導致系統不能啟動
  18. mCallback = null;
  19. }
  20. @Override
  21. public String toString() {
  22. return "Handler (" + getClass().getName() + ") {"
  23. + Integer.toHexString(System.identityHashCode(this))
  24. + "}";
  25. }
Answer: Unknown

問題2:在Handler.toString中加打印this語句導致不能啟動

  1. @Override
  2. public String toString() {
  3. Log.d(TAG,"this="+this);
  4. return "Handler (" + getClass().getName() + ") {"
  5. + Integer.toHexString(System.identityHashCode(this))
  6. + "}";
  7. }
Answer: 打印this導致toString被調用,因此會出現循環調用。
Copyright © Linux教程網 All Rights Reserved