2013-05-15 36 views
0

請看看下面的代碼: 當我使用這樣的處理程序時,我得到一個警告(這個處理程序類應該是靜態的或可能發生泄漏) 有人可以告訴我什麼是最好的方式做這個?有問題android

private void cacheImages() { 

      try { 

        // The handler is inside the function because 
        // normally this function is called once. 
        final Handler cacheHandler = new Handler() { 

        public void handleMessage(Message message) { 

         switch (message.what) { 

         case ThreadState.STARTED: 
          cachingDialog.setMax(message.arg1); 
          break; 

         case ThreadState.PROGRESSION_UPDATE: 
          cachingDialog.setProgress(message.arg1); 
          break; 

回答

0

我相信你已經回答了你自己的問題。

您已將final放置在緩存的處理程序中,該處理程序在函數內部具有new關鍵字。

這是編譯器警告你不這樣做。可以多次調用cacheImages(),所以不要這樣做!

你可以在主活動範圍內聲明cacheImages()函數的處理器OUTSIDE嗎?

編輯:實例

  final Handler cacheHandler = new Handler() { 

       public void handleMessage(Message message) { 

        switch (message.what) { 

        case ThreadState.STARTED: 
         cachingDialog.setMax(message.arg1); 
         break; 

        case ThreadState.PROGRESSION_UPDATE: 
         cachingDialog.setProgress(message.arg1); 
         break; 
        } 
       } 

private void cacheImages() { 

     try { 
      ... do stuff 
     } 
     catch (Exception e) { 
      ... do stuff 
     } 
+0

啊好,謝謝你:) – user2387510

+0

我能得到一個給予好評/接受嗎? :) –