Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
package com.google.android.datatransport.runtime;

import android.annotation.SuppressLint;

import com.google.firebase.annotations.concurrent.Background;

import dagger.Module;
import dagger.Provides;
import java.util.concurrent.Executor;
Expand All @@ -29,4 +32,12 @@ abstract class ExecutionModule {
static Executor executor() {
return new SafeLoggingExecutor(Executors.newSingleThreadExecutor());
}

@Singleton
@Provides
@Background
@SuppressLint("ThreadPoolCreation")
static Executor backgroundExecutor() {
return Executors.newSingleThreadExecutor();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,11 @@
import com.google.android.datatransport.runtime.time.Clock;
import com.google.android.datatransport.runtime.time.Monotonic;
import com.google.android.datatransport.runtime.time.WallTime;
import com.google.firebase.annotations.concurrent.Background;
import java.util.Collections;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
import javax.inject.Inject;
import javax.inject.Singleton;

Expand All @@ -48,18 +50,21 @@ public class TransportRuntime implements TransportInternal {
private final Clock uptimeClock;
private final Scheduler scheduler;
private final Uploader uploader;
private final Executor backgroundExecutor;

@Inject
TransportRuntime(
@WallTime Clock eventClock,
@Monotonic Clock uptimeClock,
Scheduler scheduler,
Uploader uploader,
WorkInitializer initializer) {
WorkInitializer initializer,
@Background Executor executor) {
this.eventClock = eventClock;
this.uptimeClock = uptimeClock;
this.scheduler = scheduler;
this.uploader = uploader;
this.backgroundExecutor = executor;

initializer.ensureContextsScheduled();
}
Expand Down Expand Up @@ -147,6 +152,11 @@ public Uploader getUploader() {
return uploader;
}

@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public Executor getBackgroundExecutor() {
return backgroundExecutor;
}

@Override
public void send(SendRequest request, TransportScheduleCallback callback) {
scheduler.schedule(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,32 @@ public class JobInfoSchedulerService extends JobService {

@Override
public boolean onStartJob(JobParameters params) {
String backendName = params.getExtras().getString(JobInfoScheduler.BACKEND_NAME);
String extras = params.getExtras().getString(JobInfoScheduler.EXTRAS);
TransportRuntime.getInstance()
.getBackgroundExecutor()
.execute(
() -> {
String backendName = params.getExtras().getString(JobInfoScheduler.BACKEND_NAME);
String extras = params.getExtras().getString(JobInfoScheduler.EXTRAS);

int priority = params.getExtras().getInt(JobInfoScheduler.EVENT_PRIORITY);
int attemptNumber = params.getExtras().getInt(JobInfoScheduler.ATTEMPT_NUMBER);
TransportRuntime.initialize(getApplicationContext());
TransportContext.Builder transportContext =
TransportContext.builder()
.setBackendName(backendName)
.setPriority(PriorityMapping.valueOf(priority));
int priority = params.getExtras().getInt(JobInfoScheduler.EVENT_PRIORITY);
int attemptNumber = params.getExtras().getInt(JobInfoScheduler.ATTEMPT_NUMBER);
TransportRuntime.initialize(getApplicationContext());
TransportContext.Builder transportContext =
TransportContext.builder()
.setBackendName(backendName)
.setPriority(PriorityMapping.valueOf(priority));

if (extras != null) {
transportContext.setExtras(Base64.decode(extras, Base64.DEFAULT));
}
if (extras != null) {
transportContext.setExtras(Base64.decode(extras, Base64.DEFAULT));
}

TransportRuntime.getInstance()
.getUploader()
.upload(transportContext.build(), attemptNumber, () -> this.jobFinished(params, false));
TransportRuntime.getInstance()
.getUploader()
.upload(
transportContext.build(),
attemptNumber,
() -> this.jobFinished(params, false));
});
return true;
}

Expand Down
1 change: 1 addition & 0 deletions transport/transport-runtime/transport-runtime.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ dependencies {
api "com.google.firebase:firebase-encoders-proto:16.0.0"

implementation 'androidx.annotation:annotation:1.3.0'
implementation 'com.google.firebase:firebase-annotations:16.2.0'
implementation 'javax.inject:javax.inject:1'

compileOnly "com.google.auto.value:auto-value-annotations:1.6.6"
Expand Down
Loading