2017-12-06 5 views
2

私は方法があります:@MainThread注釈なしエラー

/** 
* Call event without a value 
*/ 
@MainThread 
public void call() { 
    setValue(null); 
} 

をそして、私はここでそれを呼び出す:私は、メインの外からこのコールを作っていますので、エラーがスローされないのはなぜ

new Thread(new Runnable() { 
    @Override 
    public void run() { 
     stopNavigation.call(); 
    } 
}).start(); 

糸?私は@MainThread注釈について(android.support.annotationから)できることをすべて読んだが、注釈が実際に何をしているかについては何も知らせなかった。私たちは、特定のとき

答えて

1

私の知る限りでは、AndroidStudioだけスレッドに関する警告を表示する。ここ enter image description here

のように、すべてのスレッドが注釈が

public class AActivity extends Activity { 

    @MainThread 
    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     getData(); 
    } 

    @AnyThread 
    private void getData() { 
     new Thread(new Runnable() { 
      @WorkerThread // MUST DEFINE THREAD HERE 
      @Override 
      public void run() { 
       updateUI(); // annotation error here 
      } 
     }).start(); 
    } 

    @MainThread 
    void updateUI() { 

    } 

    class A extends AsyncTask<Void, Void, Void> { 
     @WorkerThread // MUST DEFINE THREAD HERE 
     @Override 
     protected Void doInBackground(Void... voids) { 
      updateUI(); // annotation error here 
      return null; 
     } 
    } 
} 
+1

はいああ良い例を動作させるためにActivityの例です。非常に価値があるようには思われません...他に何も現れなければ、これを受け入れます – HaydenKai

関連する問題