歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

問題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.   
  12.         mLooper = Looper.myLooper();  
  13.         if (mLooper == null) {  
  14.             throw new RuntimeException(  
  15.                 "Can't create handler inside thread that has not called Looper.prepare()");  
  16.         }  
  17.         mQueue = mLooper.mQueue;  
  18.         Log.d(TAG,"create handler 1 "+ this);      //本行代碼導致系統不能啟動   
  19.         mCallback = null;  
  20.     }  
  21.   
  22.     @Override  
  23.     public String toString() {  
  24.         return "Handler (" + getClass().getName() + ") {"  
  25.         + Integer.toHexString(System.identityHashCode(this))  
  26.         + "}";  
  27.     }  
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