2016-11-19 52 views
0

跳過181幀!該應用程序可能在其主線程上做了太多工作跳過181幀... Android

當我運行代碼並單擊活動時出現......爲什麼出現以及如何擺脫它?這是我的代碼

public class MainActivity extends AppCompatActivity { 
    public void Dropin(View v){ 
    ImageView Counter = (ImageView)v; 
    Counter.setTranslationY(-1000); 
    Counter.setImageResource(R.drawable.red); 
    Counter.animate().translationYBy(1000f).setDuration(300); 

} 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
} 
+3

'應用程序可能在其主線程上做了太多工作'說這一切, 我的想法是。 –

+2

正如@Rotwang所說,所以嘗試在asynctask(只是一個例子)或另一個類中添加「邏輯工作」。不要把任何繁重的工作放在UI主線程的位置。 – Carlton

+1

@Carlton是對的,但你必須知道你不能從後臺線程訪問UI對象... 我不知道'setTranslation'和'animate'如何從後臺工作,但'Counter.setImageResource'絕對不會在AsyncTask或Thread中工作。 –

回答

1

到目前爲止,您的代碼沒有任何計算繁重的工作。唯一的地方是Counter.setImageResource(R.drawable.red)調用。也許,您的圖片比您需要的圖片大得多,Android必須重新調整圖片大小。 另一個原因 - 對資源使用.png()格式,因爲轉換必須對諸如.jpg和.bmp等格式進行大量計算。

+0

謝謝你的工作!我使用.png格式 –