Transaction Design
Monitor a Network Request
Transaction Attributes
Troubleshooting
Configure Transaction Monitoring for an Android Application
Overview
GermainUX transactions measure the duration and outcome context of important operations performed by an Android application. A transaction can represent:- Application startup
- User interaction
- Network request
- Data synchronization
- Local database operation
- File processing
Show all 12
Show all 12
- Authentication
- Search
- Form submission
- Order or payment processing
- Business-process step
- Any custom operation whose duration should be measured
Transaction Design
Before adding instrumentation, define:Customer SearchOrder SubmissionData SynchronizationImage DownloadAuthentication
Start a Transaction
Start the transaction immediately before the operation being measured.Java
Kotlin
End a Transaction
End the transaction after the operation completes:Java
Kotlin
endTransaction() must match the transaction started by startTransaction().
Every started transaction should have a corresponding end call. Otherwise, GermainUX cannot calculate its complete duration.
Monitor an Asynchronous Java Operation
Usetry, catch, and finally so that the transaction ends whether the operation succeeds or fails.
AsyncTask for new implementations because it is deprecated. Use the concurrency mechanism already approved for the application.
Monitor a Kotlin Coroutine
Monitor a Network Request
Report Transaction Failures
endTransaction() completes the duration measurement. When an operation fails, also report the failure using the appropriate API:
Nested and Concurrent Transactions
Transactions may overlap when the application performs concurrent operations. When adding instrumentation:- Give different operations distinct names.
- Avoid starting multiple simultaneous transactions with the same name unless the installed library explicitly supports it.
- End each transaction from the corresponding operation path.
- Do not use a shared mutable variable for unrelated concurrent transactions.
- Test nested and parallel execution before production deployment.
Business-Process Transactions
Transactions can represent individual steps in a larger business process. For example:- End-to-end process duration
- Step duration
- Failures
- Abandonment
- Repeated steps
- Process overrun
- Lost productivity
Transaction Attributes
The basicstartTransaction() call supports a transaction name, view name, and additional information.
Use additional information only for low-cardinality, non-sensitive context. Suitable examples include:
- Operation type
- Cached or remote execution
- Record category
- Workflow step
- Feature variant
- User-entered text
- Names and email addresses
- Account or record numbers
- Authentication tokens
- Full URLs with query parameters
- Request or response payloads
- Unique values that create excessive cardinality
Analyze Transactions
In GermainUX, transactions can be analyzed by:- Transaction name
- Duration
- Count
- Average, median, and percentile
- Application version
- Android version
Show all 13
Show all 13
- Device model
- Screen or fragment
- User session
- Related error or exception
- Business process
- Success or failure context
- Release or environment
Alerts
Configure alerts for conditions such as:- Transaction duration above its SLA
- Increased transaction failures
- New exception associated with a critical transaction
- Significant performance regression after a release
- Missing expected transaction completions
- Increased business-process abandonment
Validation
After adding transaction monitoring:Execute the operation successfully
Confirm that the transaction appears in GermainUX
Verify its name, view, duration, and session
Force a controlled failure
Confirm that the transaction still ends
Verify that the related error or exception is captured
Test cancellation and timeout paths
Test concurrent executions
Confirm that no sensitive details are collected
Compare release-build behavior with the debug build
Measure instrumentation overhead
Troubleshooting
A transaction never completes
Verify that:endTransaction()executes on every path.- Failure, timeout, and cancellation paths use
finally. - The application process did not terminate before the end call.
- The transaction name matches exactly.
- Async callbacks reach their completion handler.
Transaction durations are too long
Check whether the transaction begins before unrelated work, user input, queue waiting, or background scheduling. Move the start point to the actual beginning of the operation if those delays are not part of the intended measurement.Transaction durations are too short
Confirm that the transaction does not end before an asynchronous operation finishes. End it from the completion, failure, or cancellation path rather than immediately after starting the async request.Transactions are combined incorrectly
Verify that:- Transaction names are stable but distinct by operation.
- Concurrent transactions do not use an unsupported shared name.
- Dynamic values have not been embedded in transaction names.
- The correct application and environment are assigned.
Errors are not associated with transactions
Confirm that:- The error is reported before the transaction ends.
- Both events contain the same user-session context.
- GermainUX correlation and categorization rules are enabled.
- System clocks and timestamps are consistent.
Get Help
Contact GermainUX Support
Can't find what you need?
The content of this document is proprietary to GERMAIN SOFTWARE.

