2016-05-12 4 views
1
public class view extends View 
{ 
    public view(Context context) 
    { 
     super(context); 
    } 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.drawBitmap(thing1, 200, 200, null); 
     run(); 
    } 
    public void run() 
    { 
     try { 
      Thread.sleep(2000); 
     } catch(InterruptedException ex) { 
      Thread.currentThread().interrupt(); 
     } 
     if(tester2){ 
      thing1=BitmapFactory.decodeResource(getResources(), R.drawable.image2); 
      tester2=false; 
      invalidate(); 
     } 
     else 
     { 
      thing1=BitmapFactory.decodeResource(getResources(), R.drawable.image1); 
      tester2=true; 
      invalidate(); 
     } 
    } 
} 

これはうまくいきますが、ログに "アプリケーションがあまりにも多くの作業をしている"というメッセージが表示され、多数のフレームがスキップされます。どのように私はこれを修正するのですか?skipped#frames ...アプリケーションがメインスレッドで作業している可能性があります。

+1

[アプリケーションがメインスレッドであまりにも多くの作業を行っている可能性があります](http://stackoverflow.com/questions/14678593/the-application-may-be-doing-too-much-work-on) -its-main-thread) – settaratici

答えて

1

メインスレッドでrun()メソッドを実行していないことを確認してください。これは、UI全体が少なくとも2000ミリ秒間一時停止するためです。そのメソッドを別のスレッドで実行します。

関連する問題

 関連する問題