我是Android新手。我浏览了Android ContentProvider
的代码,我对UriMatcher
感到困惑,因为 static 中的语句将首先执行。在UriMatcher
内的代码中,有一个静态块,而不知道PROVIDER_NAME
。如何使用它,因为在初始化PROVIDER_NAME
之前, static 块应该运行。
public class CustomContentProvider extends ContentProvider {
public static final String PROVIDER_NAME =
"net.learn2develop.provider.Book";
public static final Uri CONTENT_URI =
Uri.parse("content://"+ PROVIDER_NAME + "/books");
public static final String _ID = "_id";
public static final String TITLE = "title";
public static final String ISBN = "isbn";
private static final int BOOKS = 1;
private static final int BOOK_ID = 2;
private static final UriMatcher uriMatcher;
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, "books", BOOKS);
uriMatcher.addURI(PROVIDER_NAME, "books/#", BOOK_ID);
}
任何帮助都被大大接受了...... 提前谢谢
答案 0 :(得分:1)
静态初始化代码以文本顺序运行。这包括静态字段和静态块。
因此,当静态块执行时, PROVIDER_NAME
已经初始化