@MainThread注释没有错误

时间:2017-12-06 01:08:37

标签: android annotations

我有一个方法:

/**
 * 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 个答案:

答案 0 :(得分:2)

据我所知,当我们具体说明所有线程时,AndroidStudio只显示有关线程的警告 enter image description here

以下是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;
        }
    }
}