Wednesday, October 14, 2015

Android Studio 1.5 Preview 1 Available


We’ve just released 1.5 Preview 1 to the canary channel!

The memory profiler has a new “analysis” feature where it can analyze a heap dump to look for known problems, such as leaked activities. To use this feature, open a heap dump and look for the Analyzer Tasks window on the right:

AndroidStudio Analyzer Tasks window

Analyzer Tasks window

Android Studio 1.5 Preview 1 Available

Thursday, October 8, 2015

Android app architectures Standard Android MVP and MVVM



This repository showcases and compares different architectural patterns that can be used to build Android apps. The exact same sample app is built three times using the following approaches:

Standard Android: traditional approach with layouts, Activities/Fragments and Model.

MVP: Model View Presenter.

MVVM: Model View ViewModel with data binding.

The App

The sample app displays a list of GitHub public repositories for a given username. Tapping on one of them will open a repository details screen, where more information about the repo can be found. This screen also shows information about the owner of the repository.

MVP: Model View Presenter


Libraries used

  • AppCompat, CardView and RecyclerView

  • Data Binding (only MVVM)

  • RxJava & RxAndroid

  • Retrofit 2

  • Picasso

  • Mockito

  • Robolectric

Standard Android

The /app directoy contains the implementation that follows the traditional standard Android approach. This is a couple of layout files, two Activities and the model. The model is exactly the same for the three implementations and it contains: Repository, User and a retrofit service (GithubService).

With this approach, Activities are in charge of calling the GithubService, processing the data and updating the views. They act kind of like a controller in MVC but with some extra responsibilities that should be part of the view. The problem with this standard architecture is that Activities and Fragments can become quite large and very difficult to tests. Hence why I didn’t write any unit test for this case.

MVP – Model View Presenter

In /app-mvp you will find the sample app implemented following this pattern. When using mvp, Activities and Fragments become part of the view layer and they delegate most of the work to presenters. Each Activity has a matching presenter that handles accessing the model via theGithubService. They also notify the Activities when the data is ready to display. Unit testing presenters becomes very easy by mocking the view layer (Activities).

MVVM – Model View ViewModel

This pattern has recently started to gain popularity due to the release of the data binding library. You will find the implementation in /app-mvvm. In this case, ViewModels retrieve data from the model when requested from the view via data binding. With this pattern, Activities and Fragments become very lightweight. Moreover, writting unit tests becomes easier because the ViewModels are decoupled form the view.

Fork the repository

Android app architectures Standard Android MVP and MVVM

Monday, October 5, 2015

Convert Java String to Binary


Convert Java String to Binary

public class CodeSnippets 

public static StringBuilder getBinary(String value)
byte[] bytes = value.getBytes();
StringBuilder binary = new StringBuilder();
for (byte b : bytes)
int val = b;
for (int i = 0; i < 8; i++)
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;

return binary;

Convert Java String to Binary

Friday, October 2, 2015

Android Studio 1.4


Today we are releasing the 1.4 update to the Android Studio stable release channel. Most of the work and enhancements for Android Studio 1.4 are under the hood. However we have a handful of new features that we hope you enjoy and integrate into your workflow.

Android Studio 1.4