Skip to main content

🧩 Initialization

To start using the Malloc SDK features, you will need to initialize the SDK in your application's Application class using the API key that was provided to you. To initialise the SDK you will need the key that was given to you upon suspicion. If you don't have the key please contact us at support@mallocprivacy.com

🔧 Initialization Setup

To begin using MallocSDK, you must initialize it once in your Application class. This setup connects the SDK with your API key and prepares it for future security and privacy operations.

In your Application class (MyApplication.java or MyApplication.kt), add the SDK initialization in the onCreate() method as shown below:


Option 1: Asynchronous Initialization

Use MallocSDK.initializeAsync() to initialize the SDK in a background thread and receive a callback when the process completes. This is the recommended method, especially when API key verification is important before continuing execution.

Java

import android.app.Application;
import com.mallocprivacy.mallocsecuritysdk.MallocSDK;
import com.mallocprivacy.mallocsecuritysdk.InitializationFinished;

public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();

String key = "your-secret-api-key"; // Replace with your actual API key
MallocSDK.initializeAsync(getApplicationContext(), key, new InitializationFinished() {
@Override
public void onInitializationFinished(Boolean success) {
if (success) {
// SDK is ready
} else {
// Handle invalid API key
}
}
});
}
}

Kotlin

import android.app.Application
import com.mallocprivacy.mallocsecuritysdk.MallocSDK
import com.mallocprivacy.mallocsecuritysdk.InitializationFinished

class MyApplication : Application() {
override fun onCreate() {
super.onCreate()

val key = "your-secret-api-key"
MallocSDK.initializeAsync(applicationContext, key, object : InitializationFinished {
override fun onInitializationFinished(success: Boolean) {
if (success) {
// SDK is ready
} else {
// Handle invalid API key
}
}
})
}
}

Option 2: Synchronous Initialization

Use MallocSDK.initializeSync() if you need a simple and immediate boolean response to indicate whether initialization succeeded. Please mind that method blocks the thread, so do not call it on the main/UI thread and use an executor as shown below.

Java

ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(() -> {
boolean success = MallocSDK.initializeSync(getApplicationContext(), "your-secret-api-key");
if (success) {
// SDK is ready
} else {
// Handle invalid API key
}
});
executorService.shutdown();

Kotlin

val executorService = Executors.newSingleThreadExecutor()
executorService.execute {
val success = MallocSDK.initializeSync(applicationContext, "your-secret-api-key")
if (success) {
// SDK is ready
} else {
// Handle invalid API key
}
}
executorService.shutdown()

Why use ExecutorService?

SDK initialization is performed off the main thread to avoid blocking the UI during app startup. This pattern ensures smooth launch performance without impacting user experience.


Which one should I use?

MethodThread-safeReturns success?Recommended for
initializeAsync()✅ Yes✅ via callbackProduction apps (non-blocking)
initializeSync()❗ Not for main thread✅ Immediatelybackground services

✅ Tip: Avoid hardcoding your API key in production builds. Consider securing it using remote configuration or encrypted storage.