2012-01-31 139 views
1

我是Android新手。我經歷了Android ContentProvider的代碼,我對UriMatcher有點困惑,因爲靜態中的語句將首先執行。這裏在UriMatcher裏面的代碼中有一個靜態塊,沒有關於PROVIDER_NAME的想法。它如何使用它,因爲在PROVIDER_NAME初始化之前靜態塊應該運行。android內容提供者的使用者

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

靜態初始化代碼在文本順序運行。這包括靜態字段和靜態字段。

PROVIDER_NAME因此在靜態塊執行時已經初始化