Is there a way to load admob ads in an animation thread like draw()?

Hi, i wanted to make an app that loads/shows a google admob banner only when the menu is open (and hides/closes it when the menu is closed too, but i haven’t gotten that far yet). The menu itself is basically just a recatangle that fills in the screen if you click a button, nothing complicated at all. As of right now the banner shows up right after i open the app. I tried callind loadAd from draw() in a simple if/else statement that checks every frame if the menu has been opened through a boolean, but it gives me the Animation Thread error: “loadAd must be called on the main UI thread.” Now i know that all calls to google’s mobile ads SDK are supposed to be made from the main thread, but is there a way i can somehow get around this restriction? And is my idea achievable at all just in general? Is there a way to check if the menu has been opened outside of an animation thread in real time? If so, how? I’m a coding beginner so i don’t know if this is possible yet. I’ve seen something about creating new runnables in answers to similar questions, but i still don’t clearly understand what it all does exactly, so i wanted to ask. The boolean that stores wasMenuOpened value is declared outside of draw(), in the main thread, so anything should have access to it. Please try to put it rather simply. Thanks!

@superspacespaghetti === i have not verified but i think that you can build your ad as usually (onStart() or onCreate()) and set the visibility of the view to INVISIBLE; then as you have a boolean for the menu, when the menu is opened you set the visibility to VISIBLE.

@akenaton === Thank you! I will check if this works and come back later with an update!

@akenaton === Sadly, it seems like this cannot be done in an animation thread either, more specifically in any thread other than the one in which the view was created, so in any but onCreate() in my case. Got this error: “FATAL EXCEPTION: Animation Thread … Only the original thread that created a view hierarchy can touch its views.”

@superspacespaghetti ===i i ll give a look at that tomorrow; anyway if you get this error you can create a runnable to avoid it; as for now and in order to understand exactly can you put the (relevant) code you are using because i am somewhat surprised of the result; hiding or showing a view does not mean removing a created one.

@akenaton === Sure! This is my test code, here you go:

import android.os.Looper;
import android.os.Bundle;
import android.view.Window;
import android.widget.RelativeLayout;
import android.app.Activity;
//import com.google.ads.*;//
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.MobileAds;
import android.app.Activity;
import android.os.Bundle;

//default values
boolean wasAdOpen = false; 
boolean isMenuOpen = false;

float buttonsize;
AdView adView;
AdRequest newAdReq;
 
void setup() {
  size(displayWidth, displayHeight);
  background(255);
  buttonsize = width/5;
  noStroke();
}

void draw() {
  
  //MAIN APP ACTIVITY (placeholder)
  fill(255);
  rect(0, 0, width, height); 

  //DRAWING THE MENU
  if (isMenuOpen == true) {
    fill(0);
    rect(0, 0, width, height);    
  }
  
  //SHOWING ADS
  if (isMenuOpen == true && wasAdOpen == false) {
    adView.setVisibility(adView.VISIBLE); 
    wasAdOpen = true;
  } else if (isMenuOpen == false && wasAdOpen == true) {
    adView.setVisibility(adView.INVISIBLE);
    wasAdOpen = false;}
   
  //THE MENU BUTTON
  fill(200,0,0);
  circle(width/2,height/10,buttonsize);
}

void mousePressed() {
  //the menu button's hitbox
  if ((width/2 - mouseX <= buttonsize/2 && mouseX - width/2 <= buttonsize/2) 
  && (height/10 - mouseY <= buttonsize/2 && mouseY - height/10 <= buttonsize/2)) {  
    isMenuOpen = !isMenuOpen;
  }
}

@ Override
public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
//here you get the window
Window window = getActivity().getWindow();
//here you add a layout to your window; working with AS or Eclipse you can skip that because you can modify the xml; with processing you have to do that by code
 RelativeLayout adsLayout = new RelativeLayout(this.getActivity());
//here you set the params for your layout
 RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.MATCH_PARENT);
 
// now you create your View
 
adView = new AdView(this.getActivity());

adView.setAdSize(AdSize.SMART_BANNER);

adView.setX(0); 
adView.setY(height - 2*(height/10));
 
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
 
// here you add the view to the layout and build your AdRequest
  adsLayout.addView(adView);
    newAdReq = new AdRequest.Builder()
 
// .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)//
 //  .addTestDevice("xxxxxxxxxxxxxxxxx")// this is the id  from your phone for testing; you can get it using TelephonyManager
 
    .build();
 
    adView.loadAd(newAdReq);
    adView.setVisibility(adView.INVISIBLE);
 
///and finally ad the whole stuff to your window
    window.addContentView(adsLayout,lp2);
 
};

(and yes, this is based off of your by now 3 year old code, hehe :slight_smile: )

@superspacespaghetti ===
ok; i have tested and you are right (i am surprised because setting the visibility is not like setting the view to gone…) Anyway in this case you have to create a runnable. And everything works fine: see the new code (from the old one and yours taht i have simplified but it s quite the same); See that i have set the visibility of the layout and Not of the ad ; BTW your “circle” method is undefined: try to write ellipse(x, y, sw, sh) instead.

i

mport android.os.Looper;//for setup() if needed
      import android.os.Bundle;
      import android.view.Window;
      import android.widget.RelativeLayout;
      import android.app.Activity;
      import com.google.android.gms.ads.AdRequest;
      import com.google.android.gms.ads.AdView;
      import com.google.android.gms.ads.AdSize;
      import com.google.android.gms.ads.MobileAds;
      RelativeLayout adsLayout;
      boolean isMenuOpen;
      boolean wasAdOpen;
 
 
      public void setup(){
        size(800, 1000);
        Looper.prepare();
       }
 
      public void draw(){
         background(100);
         rect(100,100,100,100);
      }
      
      public void mouseReleased(){
      
         showHideAds();
      }
      
      void showHideAds(){
  this.getActivity().runOnUiThread(new Runnable() { 
///@Override 
public void run() { 
  if (wasAdOpen == false) {
   adsLayout.setVisibility(adsLayout.VISIBLE);
 
  wasAdOpen = true;
  } else if (wasAdOpen == true) {
     adsLayout.setVisibility(adsLayout.INVISIBLE);
 
   wasAdOpen = false;}
  
  }}); 
  
  
}
      
      
      @ Override
      public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
      //here you get the window
      Window window = getActivity().getWindow();
      //here you add a layout to your window; working with AS or Eclipse you can skip that because you can modify the xml; with processing you have to do that by code
       adsLayout = new RelativeLayout(this.getActivity());
      //here you set the params for your layout
       RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
          RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.MATCH_PARENT);
 
      // now you create your View
 
      AdView adView = new AdView(this.getActivity());
 
      adView.setAdSize(AdSize.SMART_BANNER);
 
      adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
 
      // here you add the view to the layout and build your AdRequest
        adsLayout.addView(adView);
          AdRequest newAdReq = new AdRequest.Builder()
 
// .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)//
 //  .addTestDevice("xxxxxxxxxxxxxxxxx")// this is the id  from your phone for testing; you can get it using TelephonyManager
 
          .build();
 
          adView.loadAd(newAdReq);
 
      ///and finally ad the whole stuff to your window
          window.addContentView(adsLayout,lp2);
          adsLayout.setVisibility(adsLayout.INVISIBLE);
          wasAdOpen = false;
 
 
      };
2 Likes

@akenaton === Thank you so much!! I’ve merged it together with the main code for my app and it works very well :grinning:

@akenaton === Hey, i’m very sorry for bothering you, but it’s me again. When i exported the app from my computer to an android device everything worked well, but i had to change the targetSdkVersion from 28 to 29 in order to upload it to Google Play. I couldn’t do it via Android Studio, so i had to use APDE. It solved my issue, but i got a new one instead. When i start up the app in APDE as a preview or exported it crashes! Both the app and APDE. This code in particular is causing the crash, without it everything works:

public void mouseReleased(){
      
         showHideAds();
      }
      
      void showHideAds(){
  this.getActivity().runOnUiThread(new Runnable() { 
///@Override 
public void run() { 
  if (wasAdOpen == false) {
   adsLayout.setVisibility(adsLayout.VISIBLE);
 
  wasAdOpen = true;
  } else if (wasAdOpen == true) {
     adsLayout.setVisibility(adsLayout.INVISIBLE);
 
   wasAdOpen = false;}
  
  }}); 
  
  
}
      
      
      @ Override
      public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
      //here you get the window
      Window window = getActivity().getWindow();
      //here you add a layout to your window; working with AS or Eclipse you can skip that because you can modify the xml; with processing you have to do that by code
       adsLayout = new RelativeLayout(this.getActivity());
      //here you set the params for your layout
       RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
          RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.MATCH_PARENT);
 
      // now you create your View
 
      AdView adView = new AdView(this.getActivity());
 
      adView.setAdSize(AdSize.SMART_BANNER);
 
      adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
 
      // here you add the view to the layout and build your AdRequest
        adsLayout.addView(adView);
          AdRequest newAdReq = new AdRequest.Builder()
 
  // .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)//
  //  .addTestDevice("xxxxxxxxxxxxxxxxx")// this is the id  from your phone for testing;    you can get it using TelephonyManager
 
          .build();
 
          adView.loadAd(newAdReq);
 
      ///and finally ad the whole stuff to your window
          window.addContentView(adsLayout,lp2);
          adsLayout.setVisibility(adsLayout.INVISIBLE);
          wasAdOpen = false;
 
 
      };

Do you know what might be causing the issue? I also get a looot of warnings before it starts, i suppose that it has something to do with it:

Initializing build sequence…
Target: debug
Deleted old build folder
Pre-processing…
Writing AndroidManifest.xml…
Writing resources…
Injected log broadcaster
Copying Processing libraries…
Copying dexed Processing libraries…
Copying contributed libraries…
Copying data folder…
Detected architecture arm64-v8a
Available cores: 8
Copying AAPT…
Changing execution permissions for AAPT…

Packaging resources with AAPT…
/data/user/0/com.calsignlabs.apde/app_build/support-res/layout/abc_alert_dialog_button_bar_material.xml:18: note: removing attribute http://schemas.android.com/apk/res/android:scrollIndi.. from <ScrollView>
/data/user/0/com.calsignlabs.apde/app_build/support-res/layout/abc_alert_dialog_button_bar_material.xml: note: using v22 attributes; synthesizing resource name.app:layout/abc_alert_dialog_button_bar_material for configuration v22.
/data/user/0/com.calsignlabs.apde/app_build/support-res/layout/abc_screen_toolbar.xml:27: note: removing attribute http://schemas.android.com/apk/res/android:touchscree.. from <android.support.v7.widget.ActionBarContainer>
/data/user/0/com.calsignlabs.apde/app_build/support-res/layout/abc_screen_toolbar.xml: note: using v21 attributes; synthesizing resource name.app:layout/abc_screen_toolbar for configuration v21.
/data/user/0/com.calsignlabs.apde/app_build/support-res/drawable/abc_ratingbar_indicator_material.xml:25: note: removing attribute http://schemas.android.com/apk/res/android:tileModeX from <bitmap>
/data/user/0/com.calsignlabs.apde/app_build/support-res/drawable/abc_ratingbar_indicator_material.xml: note: using v21 attributes; synthesizing resource name.app:drawable/abc_ratingbar_indicator_material for configuration v21.
/data/user/0/com.calsignlabs.apde/app_build/support-res/drawable/abc_ratingbar_material.xml:25: note: removing attribute http://schemas.android.com/apk/res/android:tileModeX from <bitmap>
/data/user/0/com.calsignlabs.apde/app_build/support-res/drawable/abc_ratingbar_material.xml: note: using v21 attributes; synthesizing resource name.app:drawable/abc_ratingbar_material for configuration v21.
/data/user/0/com.calsignlabs.apde/app_build/support-res/drawable/abc_ratingbar_small_material.xml:23: note: removing attribute http://schemas.android.com/apk/res/android:tileModeX from <bitmap>
/data/user/0/com.calsignlabs.apde/app_build/support-res/drawable/abc_ratingbar_small_material.xml: note: using v21 attributes; synthesizing resource name.app:drawable/abc_ratingbar_small_material for configuration v21.
Compiling with ECJ…
Compiling: /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java
----------
1. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 4)
import processing.data.*;
^^^^^^^^^^^^^^^
The import processing.data is never used
----------
2. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 5)
import processing.event.*;
^^^^^^^^^^^^^^^^
The import processing.event is never used
----------
3. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 6)
import processing.opengl.*;
^^^^^^^^^^^^^^^^^
The import processing.opengl is never used
----------
4. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 12)
import android.app.Activity;
^^^^^^^^^^^^^^^^^^^^
The import android.app.Activity is never used
----------
5. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 13)
import com.google.ads.*;
^^^^^^^^^^^^^^
The import com.google.ads is never used
----------
6. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 17)
import com.google.android.gms.ads.MobileAds;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.MobileAds is never used
----------
7. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 18)
import android.app.Acti
vity;
^^^^^^^^^^^^^^^^^^^^
The import android.app.Activity is never used
----------
8. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 19)
import android.os.Bundle;
^^^^^^^^^^^^^^^^^
The import android.os.Bundle is never used
----------
9. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 21)
import com.google.android.gms.plus.model.people.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.plus.model.people is never used
----------
10. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 22)
import com.google.ads.*;
^^^^^^^^^^^^^^
The import com.google.ads is never used
----------
11. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 23)
import com.google.android.gms.common.images.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.images is never used
----------
12. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 24)
import com.google.android.gms.nearby.messages.devices.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby.messages.devices is never used
----------
13. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 25)
import com.google.android.gms.games.achievement.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.achievement is never used
----------
14. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 26)
import com.google.android.gms.games.multiplayer.turnbased.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.multiplayer.turnbased is never used
----------
15. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 27)
import com.google.android.gms.games.stats.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.stats is never used
----------
16. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 28)
import com.google.android.gms.nearby.messages.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby.messages.internal is never used
----------
17. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 29)
import com.google.android.gms.common.server.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.server is never used
----------
18. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 30)
import com.google.android.gms.games.appcontent.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.appcontent is never used
----------
19. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 31)
import com.google.android.gms.common.server.converter.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.server.converter is never used
----------
20. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 32)
import com.google.android.gms.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.internal is never used
----------
21. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 33)
import com.google.android.gms.tagmanager.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.tagmanager is never used
----------
22. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 34)
import com.google.android.gms.clearcut.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.clearcut is never used
-------
---
23. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 35)
import com.google.android.gms.plus.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.plus is never used
----------
24. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 36)
import com.google.android.gms.games.internal.notification.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.notification is never used
----------
25. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 37)
import com.google.android.gms.ads.internal.reward.mediation.client.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.internal.reward.mediation.client is never used
----------
26. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 38)
import com.google.android.gms.ads.doubleclick.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.doubleclick is never used
----------
27. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 39)
import com.google.android.gms.ads.internal.formats.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.internal.formats is never used
----------
28. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 40)
import com.google.android.gms.ads.formats.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.formats is never used
----------
29. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 41)
import com.google.android.gms.common.annotation.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.annotation is never used
----------
30. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 42)
import com.google.android.gms.cast.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.cast.internal is never used
----------
31. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 43)
import com.google.android.gms.nearby.sharing.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby.sharing is never used
----------
32. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 44)
import com.google.android.gms.ads.reward.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.reward is never used
----------
33. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 45)
import com.google.android.gms.appdatasearch.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.appdatasearch is never used
----------
34. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 46)
import com.google.ads.mediation.admob.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.ads.mediation.admob is never used
----------
35. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 47)
import com.google.android.gms.ads.mediation.admob.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.mediation.admob is never used
----------
36. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 48)
import com.google.android.gms.common.internal.safeparcel.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.internal.safeparcel is never used
----------
37. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 49)
import com.google.android.gms.games.internal.data.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^
The import com.google.android.gms.games.internal.data is never used
----------
38. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 50)
import com.google.android.gms.ads.identifier.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.identifier is never used
----------
39. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 51)
import com.google.android.gms.common.server.response.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.server.response is never used
----------
40. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 52)
import com.google.android.gms.games.leaderboard.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.leaderboard is never used
----------
41. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 53)
import com.google.android.gms.search.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.search is never used
----------
42. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 54)
import com.google.android.gms.games.snapshot.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.snapshot is never used
----------
43. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 55)
import com.google.android.gms.safetynet.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.safetynet is never used
----------
44. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 56)
import com.google.android.gms.ads.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads is never used
----------
45. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 57)
import com.google.android.gms.gcm.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.gcm is never used
----------
46. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 58)
import com.google.android.gms.iid.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.iid is never used
----------
47. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 59)
import com.google.ads.afma.nano.*;
^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.ads.afma.nano is never used
----------
48. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 60)
import com.google.android.gms.ads.mediation.customevent.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.mediation.customevent is never used
----------
49. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 61)
import com.google.android.gms.panorama.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.panorama is never used
----------
50. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 62)
import com.google.android.gms.ads.internal.client.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.internal.client is never used
----------
51. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 63)
import com.google.android.gms.common.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common is never used
----------
52. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 64)
import com.google.android.gms.nearby.connection.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby.connection is never used
----------
53. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (
at line 65)
import com.google.android.gms.cast.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.cast is never used
----------
54. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 66)
import com.google.android.gms.games.request.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.request is never used
----------
55. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 67)
import com.google.android.gms.nearby.bootstrap.request.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby.bootstrap.request is never used
----------
56. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 68)
import com.google.android.gms.games.internal.game.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.game is never used
----------
57. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 69)
import com.google.android.gms.games.quest.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.quest is never used
----------
58. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 70)
import com.google.android.gms.nearby.sharing.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby.sharing.internal is never used
----------
59. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 71)
import com.google.android.gms.ads.reward.mediation.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.reward.mediation is never used
----------
60. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 72)
import com.google.android.gms.games.internal.api.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.api is never used
----------
61. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 73)
import com.google.android.gms.measurement.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.measurement.internal is never used
----------
62. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 74)
import com.google.android.gms.games.internal.multiplayer.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.multiplayer is never used
----------
63. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 75)
import com.google.android.gms.nearby.bootstrap.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby.bootstrap is never used
----------
64. WARNING in /data/user/0/com.calsignlabs.apde/app_bu[parsing /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java - #1/5]
[parsing /data/user/0/com.calsignlabs.apde/app_build/src/name/app/MainActivity.java - #2/5]
[parsing /data/user/0/com.calsignlabs.apde/app_build/src/name/app/APDEInternalLogBroadcasterUtil.java - #3/5]
[parsing /data/user/0/com.calsignlabs.apde/app_build/gen/name/app/R.java - #4/5]
[parsing /data/user/0/com.calsignlabs.apde/app_build/gen/android/support/v7/appcompat/R.java - #5/5]
...
import com.google.android.gms.ads.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.internal is never used
----------
65. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 77)
import com.google.android.gms.games.internal.constants.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.constants is never used
----------
66. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 78)
import com.google.android.gms.plus.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.plus.internal is never used
----------
67. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 79)
import com.google.android.gms.games.internal.player.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.player is never used
----------
68. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 80)
import com.google.android.gms.ads.internal.reward.client.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.internal.reward.client is never used
----------
69. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 81)
import com.google.android.gms.appindexing.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.appindexing is never used
----------
70. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 82)
import com.google.android.gms.games.video.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.video is never used
----------
71. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 83)
import com.google.android.gms.ads.mediation.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.mediation is never used
----------
72. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 84)
import com.google.android.gms.games.event.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.event is never used
----------
73. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 85)
import com.google.android.gms.common.data.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.data is never used
----------
74. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 86)
import com.google.android.gms.nearby.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby is never used
----------
75. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 87)
import com.google.android.gms.plus.internal.model.moments.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.plus.internal.model.moments is never used
----------
76. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 88)
import com.google.android.gms.dynamic.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.dynamic is never used
----------
77. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 89)
import com.google.android.gms.appinvite.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.appinvit
e is never used
----------
78. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 90)
import com.google.android.gms.plus.model.moments.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.plus.model.moments is never used
----------
79. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 91)
import com.google.android.gms.ads.search.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.search is never used
----------
80. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 92)
import com.google.android.gms.security.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.security is never used
----------
81. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 93)
import com.google.android.gms.games.multiplayer.realtime.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.multiplayer.realtime is never used
----------
82. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 94)
import com.google.android.gms.common.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.internal is never used
----------
83. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 95)
import com.google.android.gms.common.api.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.api is never used
----------
84. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 96)
import com.google.ads.mediation.*;
^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.ads.mediation is never used
----------
85. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 97)
import com.google.android.gms.games.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games is never used
----------
86. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 98)
import com.google.android.gms.measurement.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.measurement is never used
----------
87. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 99)
import com.google.ads.mediation.customevent.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.ads.mediation.customevent is never used
----------
88. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 100)
import com.google.android.gms.games.multiplayer.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.multiplayer is never used
----------
89. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 101)
import com.google.android.gms.games.internal.request.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.request is never used
----------
90. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 102)
import com.google.android.gms.ads.purchase.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.purchase is never used
----------
91. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 103)
import com.google.android.gms.plus.internal.model.people.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.plus.internal.model.people is never used
----------
92. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 104)
import com.google.android.gms.games.internal.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal is never used
----------
93. WARNING in
/data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 105)
import com.google.android.gms.actions.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.actions is never used
----------
94. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 106)
import com.google.android.gms.cast.games.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.cast.games is never used
----------
95. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 107)
import com.google.android.gms.nearby.messages.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.nearby.messages is never used
----------
96. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 108)
import com.google.android.gms.ads.internal.request.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.internal.request is never used
----------
97. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 109)
import com.google.android.gms.common.stats.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.common.stats is never used
----------
98. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 110)
import com.google.android.gms.ads.internal.overlay.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.ads.internal.overlay is never used
----------
99. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 111)
import com.google.android.gms.games.internal.events.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.events is never used
----------
100. WARNING in /data/user/0/com.calsignlabs.apde/app_build/src/name/app/App.java (at line 112)
import com.google.android.gms.games.internal.experience.*;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The import com.google.android.gms.games.internal.experience is never used
----------
100 problems (100 warnings)

My guess that it has something to do with the google-play-services jar file. I’m using the one from here: https://dl-ssl.google.com/android/repository/google_play_services_8298000_r28.zip
Btw about 50 of those warnings still show up when i delete the part of the code that causes the issue, but everything still works nonetheless.

@superspacespaghetti ===
Sorry, i know nothing about APDE; what i can say is that running this code with P5 i dont get any of these warnings: it seems that the whole jar is loaded and not only the required imports, i cannot understand why… Do you get the same result (warnings+crash) when you set the targetSdk to 28? And another question: why do you say that you cannot change it to 29 running AS???

Do you mean APDE preview mode?
In such cases you always need to set the app mode.
Don’t mind those warnings, these are just reminders.
You can access the build folder and modify the manifest if your device is rooted && enabling “Keep Build Folder” in the settings
Where did you place the google-play-services.jar file?

@akenaton === Yes, i do get the same result with the targetSdk set to 28.
I already tried changing it in AS, but my AS fails gradle sync for whatever reason and i can’t figure out how to fix right now.

@noel === Yes, i meant preview mode;
I set it to the app mode, enabled “keep build folder”, the manifests’s targetSdkVersion is set to 29 just as it is in APDE (if that’s what you wanted me to do), the app itself still crashes when i open it.
The jar file is in the “code” folder.
Edit: sorry, if you meant the manifest inside the apk file, then no, my device isn’t rooted so i can’t access it with it. I did open it from my computer using winrar though, but i’m not seeing targetSdkVersion anywhere. What am i supposed to modify in it exactly?

When I place this jar in the code folder I get the error
" Only a type can be imported. com.google.android.gms.games.stats resolves to a package"
How did you solve that?

In APDE only on a rooted device.

Edit: On the contrary of akenaton, I only use APDE. My PC can’t handle AS.

@noel === i have never gotten such an error before! Maybe because i deleted some folders that weren’t going to be used in the app from the jar’s com\google\android\gms folder. Here are the folders that i still have left:

clearcut
internal
games
cast
plus
safetynet
nearby
appinvite
iid
gcm
dynamic
common
security
ads
actions
tagmanager
measurement
panorama
appindexing
appdatasearch
search

Or you can just download it from here:
https://drive.google.com/file/d/11dhDCZYkI_xzwAlwJH08y3auue3g4HVr/view?usp=sharing

@superspacespaghetti ===
i’m note sure at all that all these warnings are related to the jar: some of them (eg.Activity) have nothing to see with the jar and anyway Activity is used in the code.I am also surprised that you dont get an error message when the app crashes; in order to verify i ll try ASAP to see what happens with AS, though i think that everything will run correctly targetting 29.

@akenaton === I don’t know if i get an error message or not when the app crashes because APDE crashes instanly with it so the console gets erased

@superspacespaghetti ===
ah! ok…yet i think that there is somewhere a log for this error on the phone…Yet, as i have told i know nothing about APDE.

You can enable verbose output in settings in general and for build. Don’t know if this will give an error. You can also set the following permissions manually needed for admob

  1. <!-- Google Mobile Ads Permissions -->
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  4. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  5. <uses-permission android:name="android.permission.INTERNET" />
  6. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  7. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  8. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  9. <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />

@akenaton === This is the only log that i could find:

2020-07-30 18:15:35    onStart()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:35    onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:35    begin fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:35    end fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:36    begin saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:36    after saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    onPause()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    onSaveInstanceState()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    onStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    begin saveSketchForStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    before autoSave()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    begin saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    after saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    end autoSave()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    end saveSketchForStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:15:50    onStop() after saveSketchForStop    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:38    onActivityResult()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:39    onStart()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:39    onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:39    begin fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:39    end fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:39    onPause()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:40    onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:40    begin fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:40    end fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:41    onPause()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:41    onStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:41    begin saveSketchForStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:41    before autoSave()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:41    begin saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:42    after saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:42    end autoSave()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:42    end saveSketchForStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:42    onStop() after saveSketchForStop    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:42    onDestroy()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:16:42    fragment onDestroyView()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:18:09    after loadSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText null

2020-07-30 18:18:09    onCreate() after loadSketchStart()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText null

2020-07-30 18:18:09    onStart()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText null

2020-07-30 18:18:09    onPostCreate()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText null

2020-07-30 18:18:09    onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText null

2020-07-30 18:18:09    fragment onCreate()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText null

2020-07-30 18:18:10    fragment onActivityCreated()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 0

2020-07-30 18:18:10    begin fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 0

2020-07-30 18:18:10    end fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:32    onPause()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    onSaveInstanceState()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    onStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    begin saveSketchForStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    before autoSave()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    begin saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    after saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    end autoSave()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    end saveSketchForStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:19:33    onStop() after saveSketchForStop    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:00    onStart()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:00    onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:00    begin fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:00    end fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:02    onPause()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    onSaveInstanceState()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    onStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    begin saveSketchForStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    before autoSave()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    begin saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    after saveSketch()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    end autoSave()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    end saveSketchForStop()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:20:03    onStop() after saveSketchForStop    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:21:07    onStart()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:21:07    onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:21:07    begin fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230

2020-07-30 18:21:07    end fragment onResume()    
    FS - app.pde: 25259
    SketchFile - app.pde: 25230
    CodeEditText - app.pde: 25230re