Register the listener in onCreate() and remove it in onDestroy() to follow the Android lifecycle. Callbacks provide User objects on success and CometChatException on failure:
Java
Kotlin
public class MainActivity extends AppCompatActivity { private static final String LISTENER_ID = "LOGIN_LISTENER"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CometChat.addLoginListener(LISTENER_ID, new CometChat.LoginListener() { @Override public void loginSuccess(User user) { Log.d("LoginListener", "loginSuccess: " + user.getName()); // Initialize user-specific data, navigate to main screen, etc. } @Override public void loginFailure(CometChatException e) { Log.d("LoginListener", "loginFailure: " + e.getMessage()); } @Override public void logoutSuccess() { Log.d("LoginListener", "logoutSuccess"); // Clean up resources, navigate to login screen, etc. } @Override public void logoutFailure(CometChatException e) { Log.d("LoginListener", "logoutFailure: " + e.getMessage()); } }); } @Override protected void onDestroy() { super.onDestroy(); CometChat.removeLoginListener(LISTENER_ID); }}
class MainActivity : AppCompatActivity() { private val LISTENER_ID = "LOGIN_LISTENER" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) CometChat.addLoginListener(LISTENER_ID, object : LoginListener() { override fun loginSuccess(user: User) { Log.d("LoginListener", "loginSuccess: ${user.name}") // Initialize user-specific data, navigate to main screen, etc. } override fun loginFailure(e: CometChatException) { Log.d("LoginListener", "loginFailure: ${e.message}") } override fun logoutSuccess() { Log.d("LoginListener", "logoutSuccess") // Clean up resources, navigate to login screen, etc. } override fun logoutFailure(e: CometChatException) { Log.d("LoginListener", "logoutFailure: ${e.message}") } }) } override fun onDestroy() { super.onDestroy() CometChat.removeLoginListener(LISTENER_ID) }}
Always remove login listeners when they’re no longer needed (e.g., in onDestroy() or when navigating away). Failing to remove listeners can cause memory leaks and duplicate event handling.