(1) contxt vs applicationContext ?
In Kotlin, `context` and `applicationContext` are commonly used terms when working with Android development, specifically in the context of Android app development using the Android framework. These terms refer to different objects related to the Android application's environment and lifecycle.

1. `Context`:
   - `Context` is a fundamental class in Android, and it represents various aspects of the application's environment and state. It's an abstract class and can be thought of as a handle to the system.
   - `Context` is typically used to access resources, start activities, create views, and perform various operations within the Android application.
   - It can be obtained from various places in an Android app, such as an Activity, Service, or Application object. For example, you can access the `Context` within an Activity using `this` or within a Service using `this`.
   - `Context` is used for various purposes like launching activities, creating intents, accessing the database, and more.

2. `applicationContext`:
   - `applicationContext` is a specific instance of `Context` that is associated with the entire application. It represents the application's global context and is not tied to any particular component (like an Activity or Service).
   - It's often used when you need a `Context` that is safe to use across the entire application lifecycle and isn't tied to the lifecycle of a specific component.
   - You can access the `applicationContext` from an `Activity` or other Android components like this: `applicationContext`.

Here's a quick example of when you might use each:

- Use `Context` when you need to access resources that are specific to a particular activity or component. For example, accessing layout resources in an activity or opening a database connection within a service.

```kotlin
val layoutInflater = getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
```

- Use `applicationContext` when you need a `Context` that is not tied to any specific component's lifecycle. For example, if you want to create a Toast message from a utility class that doesn't have direct access to an Activity, you can use `applicationContext`:

```kotlin
Toast.makeText(applicationContext, "Hello, World!", Toast.LENGTH_SHORT).show()
```

In summary, `context` and `applicationContext` are both instances of the `Context` class in Android, but they have different scopes and lifecycles. `context` is tied to a specific component, while `applicationContext` is associated with the entire application and can be safely used throughout its lifecycle.