我有一个方法:
/**
* 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
)的所有内容,但没有任何内容告诉我注释实际上做了什么。
答案 0 :(得分:2)
据我所知,当我们具体说明所有线程时,AndroidStudio只显示有关线程的警告
以下是Activity
中用于注释工作的示例
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;
}
}
}