2016-11-19 16 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(単なる例)や別のクラスに "logic work"を追加しようとしています。 UIのメインスレッドがどこに重い作業をしないでください。 – Carlton

+1

@Carltonは正しかったですが、バックグラウンドスレッドからUI-Objectsにアクセスできないことに気づく必要があります... バックグラウンドから 'setTranslation'と 'animate'がどのように動作するのかわかりませんが、 'Counter.setImageResource' AsyncTaskやスレッドではうまく動作しません。 –

答えて

1

あなたのコードはこれまで計算上重労働がありません。唯一の場所は、Counter.setImageResource(R.drawable.red)呼び出しです。たぶん、あなたのイメージはあなたが必要とするよりもはるかに大きなサイズであり、Androidはそれをサイズ変更する必要があります。 もう1つの理由 - リソースに.png()形式を使用すると、.jpgや.bmpなどのフォーマットで多くの計算が必要になるため

+0

ありがとうございました!私は.png形式を使用した –

関連する問題