<div dir="ltr">If you mean implementing some stuff like what is on <a href="http://brand.redhat.com/">http://brand.redhat.com/</a> for websites but for Android I would love it :)<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Mar 13, 2015 at 1:17 PM, Summers Pittman <span dir="ltr"><<a href="mailto:supittma@redhat.com" target="_blank">supittma@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 03/13/2015 12:22 PM, Andres Galante wrote:<br>
> Summers, do you think that we can build an Aerogear UI based on a library? Like we do with Patternfly and Bootstrap.<br>
</span>If you mean set up a bunch of default styles and some value add<br>
widgets/behaviors sure we can do that.<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
> ----- Original Message -----<br>
> From: "Summers Pittman" <<a href="mailto:supittma@redhat.com">supittma@redhat.com</a>><br>
> To: <a href="mailto:mobile-internal@redhat.com">mobile-internal@redhat.com</a>, "AeroGear Developer Mailing List" <<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a>><br>
> Sent: Friday, March 13, 2015 1:09:51 PM<br>
> Subject: [aerogear-dev] AeroGear usage in the DevNexus app report<br>
><br>
> I made the DevNexus[1] app the past two years and have tried to dogfood<br>
> as much of the Android AeroGear client library as I could. Consider this<br>
> a field report of sorts from a experienced user's perspective.<br>
><br>
> # Server Background<br>
> The DevNexus website exposes its registration data as a series of JSON<br>
> documents. It also exposes a custom Google+ authentication endpoint<br>
> used to identify users. This was used by the app in 2014 for backing up<br>
> user's schedules but was not used in 2015. The DevNexus website itself<br>
> is a Spring MVC application and is available on github[2].<br>
><br>
> # App Background 2015<br>
> The 2015 app has custom schedules, a Google Maps view of the venue,<br>
> presentation viewing and discovery, a directory of previous years<br>
> devnexus presentations, and a podcast player with audio from previous<br>
> year's sessions. It uses the AGDroid pipe and store libraries. In 2014<br>
> it also used the auth library but the feature using it was removed. It<br>
> also uses Picasso for image management.<br>
><br>
> # AGPipe usage review<br>
> The pipe library and its GSON marshalling are very nice and very easy.<br>
> Those were generally wrapped in a android SyncAdapter and fired at<br>
> regular intervals. Pipe's callback mechanism poses some problems<br>
> however. Because Android aggressively cleans up objects the code needed<br>
> to provide a lock that waited for the callbacks to finish. Without the<br>
> lock the code might call an object which has left Android's active state<br>
> and this causes an error. Over all it is still a very good way to<br>
> handle http networking in Android.<br>
><br>
> #AGAuth usage review<br>
> The auth module was used in the 2014 application but not in the 2015<br>
> application. The code however remains and is functional. I created two<br>
> custom AuthenticationModule objects. One interacts with the Android<br>
> Account Manager system to get a session token from Google Plus. The<br>
> other attaches a cookie to http requests and handles auth failures. In<br>
> general the architecture is sound, but it is a bit of a hack to get<br>
> around the fact that last year we did not have the authz library<br>
> finished at this point which has a better architecture for this type of<br>
> behavior.<br>
><br>
> #AGStore usage review<br>
> The store library was wrapped in a content provider. In Android the<br>
> content provider API provides a abstracted way to exposed data to<br>
> activities, services, etc while having the data management and lifecycle<br>
> happen in a controlled, centralized manner. AG Store made handling<br>
> large JSON serializable objects pretty trivial and most of my issues<br>
> were around the fact that the JSON coming from the DevNexus server has<br>
> some weird architectures. Additionally, the query mechanism doesn't let<br>
> you query properties of collections of objects. This will need to be<br>
> addressed at some point.<br>
><br>
> #Things AeroGear didn't do that would have been nice<br>
> I wanted to have offline support/file management for the podcasting<br>
> system, but there isn't a easy library for doing that (which I found in<br>
> my brief time looking) and we don't have a good solution for that yet<br>
> either. Additionally wrapping the Stores in Content providers was very<br>
> labor intensive. There are many projects to automate the various<br>
> Android patterns around Content Providers which we may be able to borrow<br>
> to make this easier.<br>
><br>
> Additionally Aerogear provides nothing for the Android UI. I think that<br>
> this is out of scope for our project but it is something to keep in<br>
> mind. However there are other VERY powerful libraries which help out in<br>
> this regard.<br>
><br>
><br>
> #Conclusion<br>
> AeroGear Android doesn't suck to use and provided real value to me. I<br>
> feel like it is stable and well built especially as of 2.0. Of course<br>
> I'm biased. If we have a good offline story we will enhance what is<br>
> already a strong service and data connection to Android users.<br>
><br>
> 1. <a href="https://github.com/secondsun/devnexus-android-2015" target="_blank">https://github.com/secondsun/devnexus-android-2015</a><br>
> 2. <a href="https://github.com/devnexus/devnexus-site" target="_blank">https://github.com/devnexus/devnexus-site</a><br>
><br>
<br>
<br>
--<br>
Summers Pittman<br>
>>Phone:<a href="tel:404%20941%204698" value="+14049414698">404 941 4698</a><br>
>>Java is my crack.<br>
<br>
_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
</div></div></blockquote></div><br></div>