@@ -40,14 +40,16 @@ public class PackageHandler extends HandlerThread {
4040 private AtomicBoolean isSending ;
4141 private boolean paused ;
4242 private final Context context ;
43+ private final boolean dropOfflineActivities ;
4344
44- protected PackageHandler (Context context ) {
45+ protected PackageHandler (Context context , boolean dropOfflineActivities ) {
4546 super (Constants .LOGTAG , MIN_PRIORITY );
4647 setDaemon (true );
4748 start ();
4849 this .internalHandler = new InternalHandler (getLooper (), this );
4950
5051 this .context = context ;
52+ this .dropOfflineActivities = dropOfflineActivities ;
5153
5254 Message message = Message .obtain ();
5355 message .arg1 = InternalHandler .INIT ;
@@ -79,7 +81,11 @@ protected void sendNextPackage() {
7981
8082 // close the package to retry in the future (after temporary failure)
8183 protected void closeFirstPackage () {
82- isSending .set (false );
84+ if (dropOfflineActivities ) {
85+ sendNextPackage ();
86+ } else {
87+ isSending .set (false );
88+ }
8389 }
8490
8591 // interrupt the sending loop after the current request has finished
@@ -92,6 +98,15 @@ protected void resumeSending() {
9298 paused = false ;
9399 }
94100
101+ // short info about how failing packages are handled
102+ protected String getFailureMessage () {
103+ if (dropOfflineActivities ) {
104+ return "Dropping offline activity." ;
105+ } else {
106+ return "Will retry later." ;
107+ }
108+ }
109+
95110 private static final class InternalHandler extends Handler {
96111 private static final int INIT = 1 ;
97112 private static final int ADD = 2 ;
@@ -175,6 +190,11 @@ private void sendNextInternal() {
175190 }
176191
177192 private void readPackageQueue () {
193+ if (dropOfflineActivities ) {
194+ packageQueue = new ArrayList <ActivityPackage >();
195+ return ; // don't read old packages when offline tracking is disabled
196+ }
197+
178198 try {
179199 FileInputStream inputStream = context .openFileInput (PACKAGE_QUEUE_FILENAME );
180200 BufferedInputStream bufferedStream = new BufferedInputStream (inputStream );
@@ -209,6 +229,10 @@ private void readPackageQueue() {
209229 }
210230
211231 private void writePackageQueue () {
232+ if (dropOfflineActivities ) {
233+ return ; // don't write packages when offline tracking is disabled
234+ }
235+
212236 try {
213237 FileOutputStream outputStream = context .openFileOutput (PACKAGE_QUEUE_FILENAME , Context .MODE_PRIVATE );
214238 BufferedOutputStream bufferedStream = new BufferedOutputStream (outputStream );
0 commit comments