android内容提供者中的urimatcher

时间:2012-01-31 04:26:25

标签: android android-contentprovider static-initialization

我是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);      
     }

任何帮助都被大大接受了...... 提前谢谢

1 个答案:

答案 0 :(得分:1)

静态初始化代码以文本顺序运行。这包括静态字段和静态块。

因此,当静态块执行

时,

PROVIDER_NAME已经初始化