2016-06-12 24 views
5

Uygulamamın bir etkinliği var. Uygulamada içerik sağlayıcımdan doldurulan bir listeye sahip bir çekmece var. Çekmeceden kullanıcı bir öğe seçebilir ve ardından Etkinlik uygun içerikle dinamik olarak doldurulur. Böyle bir durumda uygulama endekslemeyi nasıl uygulayacağımı bilmiyorum. based on step 3 of the tutorial'u kastediyorum, etkinliğin bir içerik göstermesi bekleniyor gibi görünüyor (bu konuda yanlış mıyım)?Dinamik içerik için dizin oluşturma

Not: Zaten derin bağlantı çalışmasına sahibim (uygulamanızın içeriğine ait bir web sitesi ve içerik haritanım var).

Özellikle ben dinamik olarak değiştirmek I merak ediyorum kullanıcı içeriği değiştirir her zaman şu:
mUrl = "http://examplepetstore.com/dogs/standard-poodle"; 
    mTitle = "Standard Poodle"; 
    mDescription = "The Standard Poodle stands at least 18 inches at the withers"; 

Ve evet, nasıl sadece bir kez arama yapmak gerekiyor gerçeği hakkında (onStart içinde eğer

bir tek). Ve yine, verilerim bir içerik sağlayıcıdan yüklenir. Sağlayıcı kendisi sunucudan yüklenir, ancak bu çağrı her şeyi yükler - sadece tek bir sayfanın yüklenmesi yerine.

+0

şu bağlantıyı deneyin, bu i https://firebase.google.com/docs/dynamic-links/android#handle-deep-links tahmin yardımcı olabilir –

cevap

3

AFAIK, yalnızca etkinlik başına bir kez GoogleApiClient bağlamanız gerekir. Bununla birlikte, dinamik içeriğinizi istediğiniz kadar indeksleyebilirsiniz (ancak içeriği çok fazla indekslememek daha iyi), sadece aktiviteniz bittiğinde bağlantıyı kesmeyi unutmayın. Aşağıda Projemde yaptıklarını geçerli:

HashMap<String, Action> indexedActions; 
HashMap<String, Boolean> indexedStatuses; 
public void startIndexing(String mTitle, String mDescription, String id) { 
    if (TextUtils.isEmpty(mTitle) || TextUtils.isEmpty(mDescription)) 
     return; // dont index if there's no keyword 
    if (indexedActions.containsKey(id)) return; // dont try to re-indexing 
    if (mClient != null && mClient.isConnected()) { 
     Action action = getAction(mTitle, mDescription, id); 
     AppIndex.AppIndexApi.start(mClient, action); 
     indexedActions.put(id, action); 
     indexedStatuses.put(id, true); 
     LogUtils.e("indexed: " + mTitle + ", id: " + id); 
    } else { 
     LogUtils.e("Client is connect : " + mClient.isConnected()); 
    } 
} 

public void endIndexing(String id) { 
    // dont endindex if it's not indexed 
    if (indexedStatuses.get(id)) { 
     return; 
    } 
    if (mClient != null && mClient.isConnected()) { 
     Action action = indexedActions.get(id); 
     if (action == null) return; 
     AppIndex.AppIndexApi.end(mClient, action); 
     indexedStatuses.put(id, false); 
    } 
}