By continuing to browse the site, you accept the Site Usage Agreement including consent to the processing of cookies and user data.

development android apps

Android-development innovations:
report from San-Francisco

113
0

DroidCon Conference was held in San-Francisco on 17 and 18 March 2016, devoted to Android development. Alex Kalachev attended it and collected a digest about the most interesting speeches.


DroidCon — is a whole sequence of conferences, which were held in more than 20 contries. The main goal — is Android ecosystem support as well as providing a place for discussions and meetings. DroidCon audience is very different, but mainly, there are developers, startuppers and entrepreneurs — all those, who are interested in development and business in the field of mobile technologies.

Last summer, US company Touchlab held DroidCon in NewYork, and later in Autumn Russian Apps4all apps4All — held one in Moscow. Afterwards these companies entered into partnership and organized DroidCon in San-Francisco, where I was lucky enough to visit. Participation of Russia was felt — there were lots of Russian developers and several Russian startups booths. The conference was organized in keeping with the best traditions and went off awesome, without any blunders. So I would like to wish good luck to the Russian-American partnership between Touchlab and Apps4all.

Main hall of the conference - Spherical Image - RICOH THETA
Main hall of the conference — Spherical Image - RICOH THETA

The conference was opened by Google employees — Chet Haase, Senior Developer of Android UI Toolkit and Romain Guy, Senior Developer of somekind secret project. It all began from the beautiful statistics of the latest Android editions. For example, Android Wear has already 4000 apps and 1500 watch faces, TVs with Android TV inside are made now at Sony, Sharp, nVidia and Razer, Android Auto is installed in Audi, GM, Ford, VW.

50 000 000 000 — the number of annual Android applications downloads!

Also, they have pointed out the release of Android N beta-version once again, which is available now on some of recent Nexus phones. They showed main features of the new version: Multi-Window mode (two apps can run side-by-side in the split screen) Picture-in-Picture mode, which allows to continue video playback while users are interacting with another app, and also Drag-n-Drop mode. If the first two modes were already implemented in both Android and Windows Mobile, then Drag-n-Drop — is the big difference, which was made for the sake of simplicity while working with the system. Currently, if the app supports this feature, users can easily drag data from one app to another app, so the latter could open them.

screenshot
notification
active pop up
Source developer.android.com.

The latest version includes: new notification frameworks, multi-locale support, and an improved Doze mode (a power saving mode for Android). Layouts scaling support was represented to developers. The system performs scaling and resizing not only fonts, but also control components, so it involves using of relative quantities. Furthermore, VectorDrawables performance improvement was promised.

These innovations made a great impression, but unfortunately the previous Android Marshmallow version fills 4,6% as of April 2016. Without right distribution, new features wouldn’t be supported by every developer.

The introduction of some Java 8 features support was really welcomed. Android is based on Java 7 and lacks such tools, as lambda expressions. Now, for Java 8 functional support, you can indicate the following in Gradle-file:


android {
   ...
   defaultConfig {
      ...
      jackOptions { 
         enabled true
      }
   }
   compileOptions {
      sourceCompatibility JavaVersion.VERSION_1_8
      targetCompatibility JavaVersion.VERSION_1_8
   }
}

Herewith, there will appear an opportunity to use lambda expressions (backward compatible to Android 2.3), to declare static methods and default methods in interfaces, and annotations for every data fields can be repeated a number of times..

You can get more details by following this link.

Joaquim Verges from Twitter, told about animation on Android. He mentioned the fact, that more and more developers follow Android Guidelines. That’s good, because users got an experience, which they are waiting from the Ecosystem, but on the same time, applications become similar in appearance. One of the ways to stand out the app among the others-high-quality animation. In his speech, he showed how to shift View and it’s place from one Activity to another (initially transparent), and also share cases of animation use, when it doesn’t affect on performance.

His speech is here.

One more useful appearance, was the report of Huyen Tue Dao from Trello. She shared advices as to how to make XML-layout of interface both performance efficient and multi-device compatible. Really, the majority of developers, simply don’t know about the large number of methods.

Performance matters. But it depends on the resources, which your application uses.

If you have an opportunity, you should use attributes instead of standalone View; e.g., to create a picture with text.

Before:


<LinearLayout>
   <ImageView/>
   <TextView/>
</LinearLayout>

After:


<TextView
   drawablePadding=”…”
   drawableEnd=”…” />

This advice will also work with the unit separator in ListView — divider attribute should be used, instead of standalone View.

And the main advice was — not to inherit layout_weight, to delete useless View and to avoid multi-level nesting of the views.

While the interface becomes more complicated, you should always pay attention to this and find the ways of optimization, instead of piling up different View.

Before


<LinearLayout>
   <LinearLayout>
      <TextView/>
      <TextView/>
   </LinearLayout>
   <TextView/>
</LinearLayout>

After:


<RelativeLayout>
   <TextView/>
   <TextView/>
   <TextView/>
</RelativeLayout>

You can learn more advices in this video.

Yigit Boyar also comes out on DroidCon. He is a member of Android UI Toolkit team in Google, and former member of Path team. He shared the experience of applications development, that support the offline-mode and process it correctly. The problem of many applications is an improper behavior when the connection is weak or there is no one at all. As it is shown in the statistics represented in the report the problem is really up-to-date:

  • 55% of traffic in Latin America,
  • 30% in Eastern Europe,
  • 50% in Central and Western Europe,
  • 80% in Africa,
  • 60% in Asia is the EDGE traffic (from 120Kbps to 384Kbps).

Act locally, sync globally!

While API engineering, you shouldn’t think in the terms of request-response — you should think about the user, work in the sense of synchronization. You can store a local data model on device, and and use service fields for storing subject versions or data, which was changed locally. Due to such architecture, application’s user-experience remains positive, even if the connection was broken.

Also you shouldn't use popup-dialog windows that block UI with such messages as “Please wait”, “Loading” — with a proper architecture, synchronization is possible without interface block.

If an error occurred while sending data to a server, a simple message about it (e.g., toast or an alert message in the interface) is not enough. User could have closed the app already. At this case, you may want to send a push-notification, so thatuser can repeat sending. And finally if any action doesn't require a network connection, it should always be available offline.

Local disk is your bro, and network is not your bro.

The whole appearance is available by this link.

In the pavilion DroidCon - Spherical Image - RICOH THETA
In the pavilion DroidCon — Spherical Image - RICOH THETA

So another DroidCon came to an end, and again lead developers had shared their best practices and advices. The speeches were held in different tracks simultaneously so I didn't attend all of them, but all video recordings are available on YouTube.