---
title: Droidcon Kraków 2017 - Android user conference
description: Droidcon Krakow 2017 conference is over! 2 days of substantive discussion dedicated to one of the most popular operating systems. Here is what happened.
image: https://blog-hubspot.railwaymen.org/hubfs/facebook-grafika-01.png
---

[![Railwaymen](https://blog-hubspot.railwaymen.org/hs-fs/hubfs/Railwaymen_September2018/Images/logo_bia%C5%82e.png?width=260&height=70&name=logo_bia%C5%82e.png "Railwaymen")](https://railwaymen.org/)

- [Blog Main Page](https://blog-hubspot.railwaymen.org)
- [About Us](https://railwaymen.org/about-us)
- [Our Work](https://railwaymen.org/case-studies)
- [FAQ](https://railwaymen.org/our-ai-knowledge-base)
- [Contact Us](https://railwaymen.org/contact-us)

![droidcon kraków 2017 - android user conference](https://blog-hubspot.railwaymen.org/hs-fs/hubfs/facebook-grafika-01.png?width=1320&name=facebook-grafika-01.png)

[Mobile Development](https://blog-hubspot.railwaymen.org/tag/mobile-development)

# Droidcon Kraków 2017 - Android user conference

- [Ola Majchrzak](https://blog-hubspot.railwaymen.org/author/ola-majchrzak-android-developer)
- [13th December '17](https://blog-hubspot.railwaymen.org/droidcon-krakow-2017)

At the beginning of December I had an opportunity to attend [Droidcon Kraków 2017](http://droidcon.pl/#/) – the annual conference focusing on Android development. Two days of lectures divided into three paths gave me a chance to hear about some really interesting topics. If I wanted to cover all the lectures I attended, this article would be really long, so I will focus on the topics that interested me the most.

During 'Start speking it' presentation, I learned about [Spek framework](http://spekframework.org/), which enables you to write your tests in Kotlin in a similar way to Ruby on Rails tests written with RSpec. The framework works as a JUnit TestEngine, and enables you to test also your Java classes (though tests must be written in Kotlin). Spek's main goal is to make your tests (or as its team prefers 'specifications') easy to read and understand, by specifying conditions and expected results using keywords like 'given', 'describe', 'on', 'it', i.e.:

```

object CalculatorSpec: Spek({

   given("a calculator") {

       val calculator = SampleCalculator()

       on("addition") {

           val sum = calculator.sum(2, 4)

           it("should return the result of adding the first number to the second number") {

                assertEquals(6, sum)

        }

       }

       on("subtraction") {

       val subtract = calculator.subtract(4, 2)

           it("should return the result of subtracting the second number from the first number") {

                assertEquals(2, subtract)

        }

       }

   }

})
```

(example from Spek documentation http://spekframework.org/docs/latest/<http://spekframework.org/docs/latest/>)

Although at first glance, it looked really nice, the lecturers pointed out also some drawbacks of the library, and advised to wait until new version (2.0) is released before integrating with your project.

The next presentation I would like to write about was about [Android Architecture Components](https://developer.android.com/topic/libraries/architecture/index.html), a quite new set of libraries introduced during Google I/O 2017 conference, which 1.0.0 version was released only in November. The libraries consist of three main parts: Lifecycles, ViewModel and LiveData, and Room. All these components are created to support building apps with respect to MVP and MVVM architecture patterns, and to make your app lifecycle aware. This topic can be a subject of a whole separate article (and it probably will be in a while), but just to cover the simplest examples:

Basic Android components like Activities, and Fragments (from AppCompat library) implement the LifecycleOwner interface, which enables LifecycleObservers to subscribe to the specific LifecycleOwner's methods like onStart, or onResume. In this way the LifecycleOwner class stay lean, and most of the logic is handled by the LifecycleObserver itself.

```

public class MyActivity extends AppCompatActivity {
 
   public void onCreate(...) {
 
       getLifecycle().addObserver(new MyObserver());
 
 }
 
}
```

```

public class MyObserver implements LifecycleObserver {

   @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)

   public void connectListener() {

       ...

   }

   @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)

   public void disconnectListener() {

       ...

   }

}
```

LiveData is a data holder that is lifecycle-aware. It provides you an easy way to keep your UI updated. All you need to do is to register an Observer to the LiveData instance, and after that every time when content of your LiveData gets changed, the Observer's onChange method is called and your UI can be updated. ViewModel class is a great way of preserving your data during configuration change as it is scoped not to Activity or Fragment (which gets recreated on rotation) but to the Lifecycle which goes away only when Activity finishes or when Fragment gets detached.

```

public class ItemViewModel extends ViewModel {

   private final MutableLiveData<Item> selected = new MutableLiveData<Item>();

   public void setItem(Item item) {

       selected.setValue(item);

   }

   public LiveData<Item> getItem() {

       return selected;

   }

}
```

```

public class ItemActivity extends AppCompatActivity {
 
   private ItemViewModel mModel;
 
   @Override
 
   protected void onCreate(Bundle savedInstanceState) {
 
       super.onCreate(savedInstanceState);
 
       mModel = ViewModelProviders.of(this).get(ItemViewModel.class);
 
       final Observer<Item> itemObserver = new Observer<Item>() {
 
           @Override
 
           public void onChanged(@Nullable final Item newItem) {
 
               // Update the UI, in this case, a TextView.
 
               mNameTextView.setText(newItem.getName());
 
           }
 
       };    
 
       mModel.getItem().observe(this, itemObserver);
 
   }
 
}
```

Room Persistence Library is an ORM that is built from three main components: Database, Entity and DAO. The great thing is that Room supports using LiveData objects and bases on plain SQL queries in DAO classes. Also the database migration process is quite straightforward. Below you can find a really basic database configuration example.

```

@Entity
 
public class Item {
 
   @PrimaryKey
 
   public int id;
 
   public String name;
 
   @Ignore
 
   Bitmap picture;
 
}
```

```

@Dao

public interface ItemDao {

@Insert(onConflict = OnConflictStrategy.REPLACE)

public void insertItems(Item... items);

@Query(”SELECT * FROM item”)

public LiveData<List<Item>> getAllItems();

}
```

```

@Database(entities = {Item.class}, version = 1)
 
public abstract class AppDatabase extends RoomDatabase {
 
   public abstract ItemDao itemDao();
 
}
```

```

AppDatabase db = Room.databaseBuilder(getApplicationContext(),
 
       AppDatabase.class, "database-app").build();
 
 
 
Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "database-app")
 
       .addMigrations(MIGRATION_1_2).build();
 
 
 
static final Migration MIGRATION_1_2 = new Migration(1, 2) {
 
   @Override
 
   public void migrate(SupportSQLiteDatabase database) {
 
       database.execSQL("CREATE TABLE `Producer` (`id` INTEGER, "
 
               + "`name` TEXT, PRIMARY KEY(`id`))");
 
   }
 
};
```

```
 
```

The last (but definitely not the least) lecture that is worth mentioning was about [Multi-OS Engine](https://multi-os-engine.org/), a tool that enables you to build an iOS app as a module of your Android app (!). Its base concept is that when building MVP based app, the only thing you have to handle separately for both systems is the View layer.

The rest is common and thus can be written in Java/Kotlin. That sounds really great, as it provides an Android Studio plugin that helps you with most of the configuration, and your Android code is not affected by iOS code in any way (on the other hand, if you decide to separate both apps, you will still have iOS UI done). The only drawback is that for building the UI for iOS (only building, the behavior is handled in Java) and testing on iPhone you still need an access to a computer running macOS.

Nevertheless, compared to other solutions as React Native or Xamarin, Multi-OS Engine seems to be a really interesting alternative for building apps both for Android and iOS with a little more effort.

![droidcon_krakow_2017](https://blog-hubspot.railwaymen.org/hs-fs/hubfs/Imported_Blog_Media/droid-175x300-3.jpg?width=250&height=428&name=droid-175x300-3.jpg)

As usual, I really regret that I couldn't attend all the lectures, but I hope they will be available on the Youtube later. Droidcon is a conference that is organized in various countries across the world, so if you have a chance to attend it in any location, I strongly recommend you to do so.

[Mobile Development](https://blog-hubspot.railwaymen.org/tag/mobile-development)

- Share:
- <https://twitter.com/share?text=Droidcon%20Kraków%202017%20-%20Android%20user%20conference&url=https://blog-hubspot.railwaymen.org/droidcon-krakow-2017>
- <http://www.facebook.com/sharer/sharer.php?u=https://blog-hubspot.railwaymen.org/droidcon-krakow-2017>
- <http://www.reddit.com/submit?url=https://blog-hubspot.railwaymen.org/droidcon-krakow-2017&title=Droidcon%20Kraków%202017%20-%20Android%20user%20conference>
- <https://www.pinterest.com/pin/create/button/?url=https://blog-hubspot.railwaymen.org/droidcon-krakow-2017>
- <http://www.linkedin.com/shareArticle?mini=true&url=https://blog-hubspot.railwaymen.org/droidcon-krakow-2017>

![Ola Majchrzak](https://blog-hubspot.railwaymen.org/hubfs/Author%20Images/ola-majchrzak.jpg)

Author

#### [Ola Majchrzak](https://blog-hubspot.railwaymen.org/author/ola-majchrzak-android-developer)

 Ola (Android Developer) enjoys public speaking. She organizes Women in Technology events in Cracow. Her passion is solving puzzles and watching movies.

##### [![7 ways to make a mobile app successful - proven to keep users engaged](https://blog-hubspot.railwaymen.org/hs-fs/hubfs/how%20to%20make%20a%20mobile%20app%20successful.jpg?width=305&name=how%20to%20make%20a%20mobile%20app%20successful.jpg) Related Article Business and Technology 7 Ways to Make a Mobile App Successful - Proven to Keep Users Engaged 12 min read Full Article](https://blog-hubspot.railwaymen.org/how-can-a-mobile-app-become-a-game-changer)

##### [![how gpt-5 will change your business and give you a competitive edge?](https://blog-hubspot.railwaymen.org/hs-fs/hubfs/GPT-5%20(1).jpg?width=305&name=GPT-5%20(1).jpg) Related Article Business and Technology How GPT-5 will change your business and give you a competitive edge? 5 min read Full Article](https://blog-hubspot.railwaymen.org/gpt-5-revolution-business-advantage)

##### [![how to choose the best mobile app development company](https://blog-hubspot.railwaymen.org/hs-fs/hubfs/the%20best%20Mobile%20App%20Development%20Company.jpg?width=305&name=the%20best%20Mobile%20App%20Development%20Company.jpg) Related Article Business and Technology How to Choose the Best Mobile App Development Company 12 min read Full Article](https://blog-hubspot.railwaymen.org/best-mobile-app-development-company)

## [![how to make an app part 1](https://blog-hubspot.railwaymen.org/hs-fs/hubfs/BLOG-BG-1920x1282-1.png?width=1905&height=510&name=BLOG-BG-1920x1282-1.png) Next Post --- How to Make an App Part 1 Mobile Development](https://blog-hubspot.railwaymen.org/how-to-make-an-app)

[![Railwaymen Logo](https://railwaymen.org/assets/svgs/rwm-logo-white-ae5182ba602bcbf3713fd6bb3a5288956e484b62ddf1c647e53f2fb72644913d.svg)](https://railwaymen.org)

 Railwaymen Sp. z o.o.   
 Email: info@railwaymen.org   
 NIP: 6793065841

[![European Funds Smart Growth](https://railwaymen.org/assets/icons/logos/unia-98bb8c7ed12fa79f2ddbe0e00b222213700102dba79748d59f43a304d9803de6.png)](https://railwaymen.org/grants)

[Estimate Project](https://railwaymen.org/estimate-project) [Newsletter Subscribe](https://learn.railwaymen.org/newsletter)

- <https://www.linkedin.com/company/railwaymen>
- <https://www.facebook.com/railwaymen.software.development>
- <https://www.youtube.com/channel/UCu5v1NuohjsTZXGV4K60KWA>
- <https://www.instagram.com/railwaymen_org>
- <https://twitter.com/Railwaymen_org>
- <https://dribbble.com/Railwaymen_org>
- <https://www.behance.net/railwaymen>

##### Company

- [Services](https://railwaymen.org/services)
- [Our Work](https://railwaymen.org/case-studies)
- [About us](https://railwaymen.org/about-us)
- [Blog](https://blog.railwaymen.org)
- [Career](https://railwaymen.org/careers)
- [Personal Data Protection](https://railwaymen.org/personal-data-protection)
- [Cookies Policy](https://railwaymen.org/docs/Cookie_Policy.pdf)
- Cookie Settings

##### Services

- [Web Development](https://railwaymen.org/services/web-development)
- [Mobile Development](https://railwaymen.org/services/mobile-development)
- [Product Design](https://railwaymen.org/services/product-design)
- [Discovery Phase](https://railwaymen.org/services/discovery-phase)
- [MVP Development](https://railwaymen.org/services/mvp-development)
- [Digital Transformation](https://railwaymen.org/services/digital-transformation)
- [Social Networking Software](https://railwaymen.org/services/social-networking-software)
- [Restaurant App Development](https://railwaymen.org/services/restaurant-app-development)
- [Construction Sofware Development](https://railwaymen.org/services/construction-software-development)
- [Custom Marketing Software Development](https://railwaymen.org/services/custom-marketing-software-development)
- [FinTech App Development](https://railwaymen.org/services/fintech-development)

##### Our Experts Must - Reads

- [Is Ruby on Rails Dead in 2025?](https://blog.railwaymen.org/is-ruby-on-rails-dead)
- [How to Start an App Development Project? \[Checklist\]](https://blog.railwaymen.org/checklist-what-you-have-to-do-to-start-the-app-development-project)
- [How to Build an MVP? \[5 Steps\]](https://blog.railwaymen.org/how-to-build-an-mvp)
- [How Long Does it Take to Make An App in 2025?](https://blog.railwaymen.org/how-long-does-it-take-to-make-an-app)
- [Agile Discovery Phase: a Must Have for Your Business](https://blog.railwaymen.org/why-a-discovery-phase-is-a-must-have-for-your-project)
- [Railwaymen App Development Cost Breakdown - How Much do We Charge and Why?](https://blog.railwaymen.org/app-development-cost-breakdown)
- [FAQ: Web & Mobile Development With Us Explained](https://blog.railwaymen.org/railwaymen-faq-web-and-mobile-development-with-us-explained)

 Awards

[![Clutch Recognition Best B2B Companies Global](https://railwaymen.org/assets/awards/Top_B2B_Companies_Global_2018-5d1c8e5358737540e214ce8d51e450fe06ac4be35a0a220c0c2ccfa912787879.png)](https://clutch.co/profile/railwaymen)[![Clutch Recognition Best Ruby on Rails Developers](https://railwaymen.org/assets/awards/ClutchAward2021-013bdba335eecb6eb59319b0475d099899bbb2fa50e4596186ea2126d5b606af.png)](https://clutch.co/press-releases/recognizes-top-performing-development-companies-poland-2021)[![Clutch Top Ruby on Rails Developer Poland 2022](https://railwaymen.org/assets/awards/ClutchTopSoftwareDeveloperPoland_2022-d094b46bd3ce96c9355d21d0c6a05bc4f5959ec255f6815af8797c0a938a6b9e.png)](https://clutch.co/profile/railwaymen)[![Clutch Top React Native Developer Poland 2022](https://railwaymen.org/assets/awards/ClutchTopReactNativePoland_2022-a50094d73ac73fec5c868c5544048db746c9a086fcbe9e7dcf3644875c47762c.png)](https://clutch.co/profile/railwaymen)[![Clutch Top Ruby on Rails Developer Poland 2022](https://railwaymen.org/assets/awards/ClutchTopRubyOnRailsPoland_2022-dc90eec21384445755158dd53914b6e3ef947e75cfe6dba521822c73bd64b789.png)](https://clutch.co/profile/railwaymen)[![Clutch Top Software Developer Fintech 2022](https://railwaymen.org/assets/awards/ClutchTopSoftwareDeveloperFintech_2022-ba75658f45c04d38d0fa4f9dcbfc78e2982b62222d681d6dc3f2f40fe2cafc9b.png)](https://clutch.co/profile/railwaymen)[![Clutch B2B Services 2022](https://railwaymen.org/assets/awards/Best-PerformingB2B2022-4a7057260a703088e644083b31320fe6fdafbfe3491eadf7e9a711fa9e3f9174.png)](https://clutch.co/profile/railwaymen)

[![Clutch Recognition Best App Development Company](https://railwaymen.org/assets/awards/TheClutch1000-a5cd5e3433659ee45539838fa945002f147b6ed9065166f8ba9ff56d216173eb.png)](https://blog.railwaymen.org/railwaymen-named-global-leaders-top-10-ruby-on-rails-developers-2018?_gl=1*1lggq91*_gcl_au*MTY4NzY2MDQ5Mi4xNzMxNDAxMDg4*_ga*MTY1MzUxNjI1Ni4xNzMxNDAxMDg4*_ga_1TW68M8Z6C*MTczMjcwMDE4Ny4xNi4xLjE3MzI3MDExMzYuMzIuMC4w)[![Top Software Development Company](https://railwaymen.org/assets/awards/Custom-Software-Development-Companies-1c56b8d73fbc48c21514311021c65f85a53cd955a3f910a9c2347a6c4a934b0f.png)](https://www.softwareworld.co/top-custom-software-development-companies/)[![Hire elite software development vendors at Pangea](https://railwaymen.org/assets/awards/Pangea-3db009da8ad6d19dfdafc66c51d16928730a715c3195776579bff5e0df4c13d4.png)](https://www.pangea.ai/vendors/railwaymen/)[![GoodFirms Badge](https://railwaymen.org/assets/awards/goodfirms-6880d7b6b80ee00d7189656a8236466571c5f94f146a8d42f5421d85f53b05df.svg)](https://www.goodfirms.co/company/railwaymen)[![Digital Knights](https://railwaymen.org/assets/awards/dk-8e9cb01c4fb52cd6dd812212e5d6925772aa6399c71d47387e3f8a8d5d58ac59.svg)](https://www.digitalknights.co/)

Railwaymen locations

- Kraków
  
  Na Zjeździe 11, 30-527
- San Francisco
  
   Silicon Valley Acceleration Center. 180 Sansome Street

 You can change your cookie settings at any time Close and don't show again

© 2026 Railwaymen

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Ola Majchrzak",
    "url" : "https://blog-hubspot.railwaymen.org/author/ola-majchrzak-android-developer"
  },
  "dateModified" : "2025-03-20T12:37:28.808Z",
  "datePublished" : "2017-12-13T14:14:52.000Z",
  "headline" : "Droidcon Kraków 2017 - Android user conference",
  "image" : [ "https://blog-hubspot.railwaymen.org/hubfs/facebook-grafika-01.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blog-hubspot.railwaymen.org/droidcon-krakow-2017",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blog-hubspot.railwaymen.org/hubfs/new%20website/rwm%20logotype.png"
    },
    "name" : "Railwaymen Sp. z o.o."
  }
}
```