Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get instance initialized with the new App Startup API

I saw this new API in the Android dev guide,and I wanted to try it out since it looked like a really nice way to initialize components. But looking over the articles and the examples, it makes no sense to me how am I suppose to use this API. I get the first example, in order to use the WorkManager you would first need to call its initialize method, so this new API can handle that for you. But the create method of the Initializer returns an instance of whatever you are trying to initialize. This means that that instance is somewhere available for you to grab. But there is no explanation on how to retrieve that instance later in your code to use it.

So my question is if there was anyone who got around to test this new API, if you could give me an example of how you use the instance that the App Startup API initialized for you. Thanks in advance!

like image 507
Adrian Pascu Avatar asked Jun 15 '20 19:06

Adrian Pascu


People also ask

What is AndroidX startup?

AndroidX App Startup is a recent addition to the Android Jetpack suite of libraries. It provides a performant* way to initialize components at app startup by avoiding the use of a separate ContentProvider for each library, thus eliminating the setup cost that comes with each of them.

How do I change the startup programs on my Android?

To give this method a try, open Settings and go to the Application Manager. It should be in "Installed Apps" or "Applications," depending on your device. Select an app from the list of downloaded apps and turn the Autostart option on or off.

What is app startup?

The App Startup library provides a straightforward, performant way to initialize components at application startup. Both library developers and app developers can use App Startup to streamline startup sequences and explicitly set the order of initialization.

How do I launch an Android app?

An Android process is started whenever it is required. Any time a user or some other system component requests a component (could be a service, an activity or an intent receiver) that belongs to your application be executed, the Android system spins off a new process for your app if it's not already running.


1 Answers

As of now, the library leaves this up to the developer. The point is mainly to add a unified way for libraries to automatically initialize themselves without boilerplate code. If you are the author of a library using this approach, you are still obligated to provide a way of obtaining these objects.

Edit

I went with the assumption that AppInitializer.getInstance(context).initializeComponent(...) is only used for creating new instances. However, after having a look at the source code, it turns out instances are cached and immediately returned here if they have been inititialized earlier. But on the down side, you will need to pass a Context object.

I would also advice to only call it from the main thread, since there is no singleton-style locking in place

like image 67
Adrian K Avatar answered Oct 09 '22 03:10

Adrian K