Android Open Source - playnomics-android Messaging Manager






From Project

Back to project page playnomics-android.

License

The source code is released under:

Apache License

If you think the Android project playnomics-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.playnomics.android.messaging;
//from w ww.j  a va 2  s.c  o  m
import java.util.concurrent.ConcurrentHashMap;

import android.app.Activity;

import com.playnomics.android.client.PlacementDataClient;
import com.playnomics.android.messaging.Placement.IPlacementStateObserver;
import com.playnomics.android.messaging.Placement.PlacementState;
import com.playnomics.android.messaging.ui.IPlayViewFactory;
import com.playnomics.android.messaging.ui.RenderTaskFactory;
import com.playnomics.android.sdk.IPlacementDelegate;
import com.playnomics.android.session.ICallbackProcessor;
import com.playnomics.android.session.Session;
import com.playnomics.android.util.IConfig;
import com.playnomics.android.util.Logger;
import com.playnomics.android.util.Util;

public class MessagingManager implements IPlacementStateObserver {
  private Util util;
  private ConcurrentHashMap<String, Placement> placementsByName;
  private ConcurrentHashMap<String, Placement> placementsByActivityName;
  private PlacementDataClient placementDataClient;
  private Logger logger;
  private ICallbackProcessor callbackProcessor;
  private RenderTaskFactory renderTaskFactory;

  public void setSession(Session session) {
    this.callbackProcessor = session;
    this.placementDataClient.setSession(session);
  }

  public MessagingManager(IConfig config,
      PlacementDataClient placementDataClient, Util util, Logger logger,
      IPlayViewFactory viewFactory) {
    this.placementDataClient = placementDataClient;
    this.util = util;
    this.placementsByName = new ConcurrentHashMap<String, Placement>();
    this.placementsByActivityName = new ConcurrentHashMap<String, Placement>();
    this.logger = logger;
    this.renderTaskFactory = new RenderTaskFactory(viewFactory, logger);
  }

  public void preloadPlacements(String[] placementNames) {
    for (String placementName : placementNames) {
      if(placementName != null){
        getOrAddPlacement(placementName);
      }
    }
  }

  public void showPlacement(String placementName, Activity activity,
      IPlacementDelegate delegate) {
    if(placementName == null){
      return;
    }
    Placement placement = getOrAddPlacement(placementName);
  
    if(placement.getState() == PlacementState.NOT_LOADED || placement.getState() == PlacementState.LOAD_FAILED){
      placement.setState(PlacementState.LOAD_STARTED);
      placementDataClient.loadPlacementInBackground(placement);
    }
    
    placement.show(activity, delegate);
  }
  
  private Placement getOrAddPlacement(String placementName) {
    Placement placement;
    if (!placementsByName.containsKey(placementName)) {
      placement = new Placement(placementName, callbackProcessor, util,
          logger, this, renderTaskFactory);
      placement.setState(PlacementState.LOAD_STARTED);
      placementDataClient.loadPlacementInBackground(placement);
      placementsByName.put(placementName, placement);
    } else {
      placement = placementsByName.get(placementName);
    }
    return placement;
  }

  public void hidePlacement(String placementName) {
    if (placementsByName.containsKey(placementName)) {
      Placement placement = placementsByName.get(placementName);
      placement.hide();
    }
  }

  public void onPlacementShown(Activity activity, Placement placement) {
    placementsByActivityName.put(getKeyForActivity(activity), placement);
  }

  public void onPlacementDisposed(Activity activity, Placement placement) {
    placement.setState(PlacementState.LOAD_STARTED);
    placementDataClient.loadPlacementInBackground(placement);
    placementsByActivityName.remove(getKeyForActivity(activity));
  }

  public void onActivityResumed(Activity activity) {
    String key = getKeyForActivity(activity);
    if (placementsByActivityName.containsKey(key)) {
      Placement placement = placementsByActivityName.get(key);
      placement.attachActivity(activity);
    }
  }

  public void onActivityPaused(Activity activity) {
    String key = getKeyForActivity(activity);
    if (placementsByActivityName.containsKey(key)) {
      Placement placement = placementsByActivityName.get(key);
      placement.detachActivity();
    }
  }

  private String getKeyForActivity(Activity activity) {
    return activity.getClass().getName();
  }
}




Java Source Code List

com.playnomics.PlaynomicsMoreTestActivity.java
com.playnomics.PlaynomicsTestAppActivity.java
com.playnomics.RichDataFrameDelegate.java
com.playnomics.android.client.AssetClient.java
com.playnomics.android.client.EventQueue.java
com.playnomics.android.client.EventWorker.java
com.playnomics.android.client.HttpConnectionFactory.java
com.playnomics.android.client.IEventQueue.java
com.playnomics.android.client.IEventWorker.java
com.playnomics.android.client.IHttpConnectionFactory.java
com.playnomics.android.client.PlacementDataClient.java
com.playnomics.android.client.SegmentationClient.java
com.playnomics.android.events.AppPageEvent.java
com.playnomics.android.events.AppPauseEvent.java
com.playnomics.android.events.AppResumeEvent.java
com.playnomics.android.events.AppRunningEvent.java
com.playnomics.android.events.AppStartEvent.java
com.playnomics.android.events.CustomEvent.java
com.playnomics.android.events.ExplicitEvent.java
com.playnomics.android.events.ImplicitEvent.java
com.playnomics.android.events.PlaynomicsEvent.java
com.playnomics.android.events.TransactionEvent.java
com.playnomics.android.events.UserInfoEvent.java
com.playnomics.android.messaging.CloseButton.java
com.playnomics.android.messaging.HtmlAdFactory.java
com.playnomics.android.messaging.HtmlAd.java
com.playnomics.android.messaging.HtmlCloseButton.java
com.playnomics.android.messaging.MessagingManager.java
com.playnomics.android.messaging.NativeCloseButton.java
com.playnomics.android.messaging.Placement.java
com.playnomics.android.messaging.Position.java
com.playnomics.android.messaging.Target.java
com.playnomics.android.messaging.ui.IPlayViewFactory.java
com.playnomics.android.messaging.ui.PlayDialog.java
com.playnomics.android.messaging.ui.PlayViewFactory.java
com.playnomics.android.messaging.ui.PlayWebView.java
com.playnomics.android.messaging.ui.RenderTaskFactory.java
com.playnomics.android.push.GcmBroadcastReceiver.java
com.playnomics.android.push.GcmIntentService.java
com.playnomics.android.push.GcmManager.java
com.playnomics.android.sdk.IGoogleCloudMessageConfig.java
com.playnomics.android.sdk.IPlacementDelegate.java
com.playnomics.android.sdk.IPlaynomicsPlacementDelegate.java
com.playnomics.android.sdk.IPlaynomicsPlacementRawDelegate.java
com.playnomics.android.sdk.IPlaynomicsSegmentationDelegate.java
com.playnomics.android.sdk.IPushConfig.java
com.playnomics.android.sdk.IPushNotificationDelegate.java
com.playnomics.android.sdk.Playnomics.java
com.playnomics.android.segments.UserSegmentIds.java
com.playnomics.android.session.ActivityObserver.java
com.playnomics.android.session.GameSessionInfo.java
com.playnomics.android.session.HeartBeatHandler.java
com.playnomics.android.session.HeartBeatProducer.java
com.playnomics.android.session.IActivityObserver.java
com.playnomics.android.session.ICallbackProcessor.java
com.playnomics.android.session.IHeartBeatProducer.java
com.playnomics.android.session.SessionStateMachine.java
com.playnomics.android.session.Session.java
com.playnomics.android.session.TouchEventHandler.java
com.playnomics.android.session.WindowCallbackProxy.java
com.playnomics.android.util.AndroidLogger.java
com.playnomics.android.util.AsyncTaskRunner.java
com.playnomics.android.util.CacheFile.java
com.playnomics.android.util.Config.java
com.playnomics.android.util.ContextWrapper.java
com.playnomics.android.util.EventTime.java
com.playnomics.android.util.IAsyncCall.java
com.playnomics.android.util.IConfig.java
com.playnomics.android.util.IRandomGenerator.java
com.playnomics.android.util.LargeGeneratedId.java
com.playnomics.android.util.LogWriter.java
com.playnomics.android.util.Logger.java
com.playnomics.android.util.Util.java