B4A Library ViewPager - Cleaned up ViewPager

This library is a cleaned up and slightly enhanced version of the AHViewPager library. There are some deprecated objects in AHViewPager that I removed here and it has a slighly better handling now.

Installation:
You will need the Android Support Repository installed in SDK Manager.
The library requires B4A 6.31+
Copy all three files (.xml, .jar, .aar) to your additional libraries folder.

Your support
Creating libraries and wrappers for existing library projects is a lot of work. The use of this library is totally free and you even don't need to mention in your app that you use it.
But if you use this library in your projects and you think it is useful to you please consider to make a donation:

Thanks very much for your support.

Usage:
Usage is very similar to AHViewPager though I never really explained AHViewPager in detail. So here we go:

There are 3 objects: PageContainer, ViewPager and VPage.

The PageContainer holds the pages of type VPage. You can add and remove pages dynamically.
You will probably do something like this in Activity_Create:
B4X:
Sub Globals
    Private VP As ViewPager
    Private PC As PageContainer
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("layout1")

    'Initialize the PageContainer.
    PC.Initialize

    'Add some pages
    For i = 0 To 10
        PC.AddPage("Page " & i)
    Next

Adding a page does create a VPage object. This object contains a title, can hold a tag object for storing additional data and has a Panel. The Panel is initialized when a page is added but it is not added to any layout so it has no size at this time and a layout can not be loaded immediately. Loading a layout is done in the PageCreated event.

The ViewPager object is added to the layout of your activity, either by code or by designer. You need to connect the ViewPager with the PageContainer:
B4X:
'Set the PageContainer for the ViewPager
VP.PageContainer = PC

There are no tabs in this library. If you want to have tabs for the ViewPager use DSTabLayout from DesignSupport library (see the example, you will need DesignSupport library v2.21+).

The VPage object just represents one page.

To load the contents for the pages you should use the PageCreated Event.
There are two possiblilites to load the layout.

1. Cached
A cached page is only initialized once. You can check with the Page.AlreadyCreated property if the page was created previously.
2. Non-Cached
Non-Cached pages are regenerated every time the PageCreated event is fired.

The advantage of cached pages is that the page content is only created once in the lifetime of the ViewPager. Disadvantage is that it needs more memory to hold all the pages.

B4X:
Sub VP_PageCreated (Position As Int, Page As VPage)
    If Page.AlreadyCreated = True Then
        Log("Page already created => do nothing")
    Else
        Log("New Page => load the layout")
        Page.Panel.LoadLayout("pagelayout")
                [fill the content of your page here]
    End If
End Sub

If you use Cached pages then you don't need to do anything in the PageDestroyed event. The page panel will just be removed from the layout (and readded again on PageCreated automatically).
If you use Non-Cached pages then you have to remove all content from the page panel in PageDestroyed:
B4X:
Sub VP_PageDestroyed (Position As Int, Page As VPage)
    Page.Panel.RemoveAllViews
    Page.AlreadyCreated = False
End Sub
Remember: You should only do this for non-cached pages.

Reference:
ViewPager
Comment:
This library provides objects to implement a CustomViewPager.
Author: Markus Stipp
Version: 1
  • PageContainer
    Methods:
    • AddPage (Title As String) As VPage
      Add a new page to the Container. This will create a new page object that is returned.
      The panel of the page object IS NOT added to any layout at this time so it has no size
      and you cannot load a layout directly after the page is added!

      Use the PageCreated event to load the layout.

      View - The view to be added as a new page
      Title - The title of the new page
    • AddPageAt (Title As String, Position As Int) As VPage
      Add a new page to the pager layout at the specified position.

      View - The view to be added as a new page
      Title - The title of the new page
      Position - Position where the new page will be added
    • DataChanged
      Tell the ViewPager that the Container has new data.
      Call this when you are done with adding/removing pages dynamically.
    • DeletePage (Position As Int)
      Deletes the specified page.

      Position - Page to be deleted
    • GetPageAt (Position As Int) As VPage
      Returns the Page added to the Container

      Position - Index of the page
    • Initialize
      Initializes the object
    Properties:
    • IsInitialized As Boolean [read only]
    • Pages As List [read only]
      The List or Array of the pages.
  • VPage
    Methods:
    • Initialize
    Properties:
    • AlreadyCreated As Boolean
      returns if the Page was created at least once.
    • Panel As PanelWrapper [read only]
      Returns the ContentPanel of this page object.
    • Tag As Object
      Sets or gets a Tag for the Page.
    • Title As String
      Sets or gets the Title of the Page.
  • ViewPager
    Events:
    • PageChanged (Position As Int)
    • PageCreated (Position As Int, Page As VPage)
    • PageDestroyed (Position As Int, Page As VPage)
    • PageScrollStateChanged (State as Int As )
    • PageScrolled (Position As Int, PositionOffset As Float, PositionOffsetPixels As Int)
    Fields:
    • SCROLLSTATE_DRAGGING As Int
    • SCROLLSTATE_IDLE As Int
    • SCROLLSTATE_SETTLING As Int
    Methods:
    • BringToFront
    • DesignerCreateView (base As PanelWrapper, label As LabelWrapper, props As Map)
      This method is only for the B4A Designer. Don't call it directly
    • GotoPage (Page As Int, Smooth As Boolean)
      Jump or Scroll to the new page

      Page - The new page to display
      Smooth - set to True to smoothly scroll to the new item, false to transition immediately
    • Initialize (EventName As String)
      Initializes the object.

      EventName - Sets the sub that will handle the event.
    • Initialize2 (Container As PageContainerWrapper, EventName As String)
      Initializes the object.

      Layout - A fully initialized AHPagerLayout object with the content of the pages.
      EventName - Sets the sub that will handle the event.
    • Invalidate
    • Invalidate2 (Rect As Rect)
      Invalidate a rectangualar part of the object
    • Invalidate3 (Left As Int, Top As Int, Right As Int, Bottom As Int)
      Invalidate part of the object
    • IsInitialized As Boolean
    • RemoveView
    • RequestFocus As Boolean
    • SendToBack
    • SetBackgroundImage (arg0 As Bitmap)
    • SetColorAnimated (Duration As Int, FromColor As Int, ToColor As Int)
      Animate the color to a new value
    • SetLayout (Left As Int, Top As Int, Width As Int, Height As Int)
      Changes the View position and size.
    • SetLayoutAnimated (Duration As Int, Left As Int, Top As Int, Width As Int, Height As Int)
      Similar to SetLayout. Animates the change. Note that the animation will only be applied when running on Android 3+ devices.

      Duration - duration of the layout change
    • SetVisibleAnimated (Duration As Int, Visible As Boolean)
      Fade the view in or out
    Properties:
    • Background As Drawable
    • Color As Int [write only]
    • CurrentPage As Int
      Get or Set the current page
    • Enabled As Boolean
    • Height As Int
      Gets or sets the view's height
    • Left As Int
      Gets or sets the view's left position
    • OffscreenPageLimit As Int
      Set the number of pages that should be retained to either side of the
      current page in the view hierarchy in an idle state. Pages beyond this
      limit will be recreated from the adapter when needed.

      This is offered as an optimization. If you know in advance the number
      of pages you will need to support or have lazy-loading mechanisms in place
      on your pages, tweaking this setting can have benefits in perceived smoothness
      of paging animations and interaction. If you have a small number of pages (3-4)
      that you can keep active all at once, less time will be spent in layout for newly
      created view subtrees as the user pages back and forth.

      You should keep this limit low, especially if your pages have complex layouts. This setting defaults to 1.
    • Padding()() As Int
    • PageContainer As PageContainerWrapper [write only]
    • PageMargin As Int
      Set the margin between pages.
    • PagingEnabled As Boolean
      Enables or disables the paging of the ViewPager.
    • Parent As Object [read only]
    • Tag As Object
    • Top As Int
      Gets or sets the view's top position
    • Visible As Boolean
    • Width As Int
      Gets or sets the view's width

Version history:
V1.00
  • Initial release
V1.01
  • Fix: changed packagename to anywheresoftware.b4a.objects to reduce fields size.
V1.10
  • Compiled against newest Support library.
  • Fixed crash when adding items to a page manually
 

Attachments

  • NewViewPagerExample1_0.zip
    9.7 KB · Views: 797
  • ViewPagerLib1_10.zip
    14.2 KB · Views: 721
Last edited:

Mahares

Expert
Licensed User
Longtime User
Markus:
I use the old AHViewPager in some of my projects:
1. What is involved in converting a AHViewpager project into the new and improved ViewPager project?
2. In some of the AHViewPager projects, I have to temporarily delete a page or two depending on the program requirements and then recreate the pages to the original number when needed again. How is this process handled in the ViewPager? Hiding is better than deleting and recreating.
Thank you for providing support to your libraries for a long time. Your work has been very dependable and reliable for many years.
 
Last edited:

corwin42

Expert
Licensed User
Longtime User
Martin:
I use the old AHViewPager in some of my projects:
1. What is involved in converting a AHViewpager project into the new and improved ViewPager project?
2. In some of the AHViewPager projects, I have to temporarily delete a page or two depending on the program requirements and then recreate the pages to the original number when needed again. How is this process handled in the ViewPager? Hiding is better than deleting and recreating.
Thank you for providing support to your libraries for a long time. Your work has been very dependable and reliable for many years.

The main difference between the AHViewPager and the new ViewPager is the VPage object.

In AHViewPager you had to create a Panel and add it with PC.AddPage(panel, "Title"). You do not need to create the panel anymore. This is done internally when the VPage object is instantiated. So adding a page ist just PageContainer.AddPage("Title").

The VPage is pushed as a parameter in PageCreated and PageDestroyed events. So accessing the page panel is now a bit cleaner:
B4X:
Sub VP_PageCreated (Position As Int, Page As VPage)
    If Page.AlreadyCreated = False Then
        Page.Panel.LoadLayout("pagelayout")
    End If
End Sub

Previously you had to create a local panel object to convert from Object to Panel:
B4X:
Sub VP_PageCreated (Position As Int, Page As Object)
    Dim p As Panel
    p = Page
 
    p.LoadLayout("pagelayout")
End Sub

Additionally if you wanted to cache the page you had to create a global Array variable which holds if a page has already a loaded layout or not. This can now simply be done with the VPage.AlreadyCreated property. This makes the usage much clearer and simpler.

Adding/Removing pages should be almost the same as in AHViewPager library. In the new ViewPager you have to call PageContainer.DataChanged after adding or removing pages manually to inform the ViewPager object of the change.

Be aware that the new ViewPager does not contain any Tabstrip objects. You should use the DSTabLayout object of DesignSupport library. (It requires DesignSupport Library v2.21 which can be found here)
 
Last edited:

Mahares

Expert
Licensed User
Longtime User
This library is a cleaned up and slightly enhanced version of the AHViewPager library

Running the sample code, I get this error right off the bat:
B4A version: 6.50
Parsing code. (0.00s)
Compiling code. (0.03s)
Compiling layouts code. (0.03s)
Organizing libraries. (3.59s)
Generating R file. Error
C:\Android\Basic4Android\MiscPrograms2016\ViewPagerCorwin42Lib100\NewViewPager\Objects\bin\extra\res3\res\values-v23\values-v23.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.

C:\Android\Basic4Android\MiscPrograms2016\ViewPagerCorwin42Lib100\NewViewPager\Objects\bin\extra\res3\res\values-v23\values-v23.xml:34: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

C:\Android\Basic4Android\MiscPrograms2016\ViewPagerCorwin42Lib100\NewViewPager\Objects\bin\extra\res3\res\values-v24\values-v24.xml:3: error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'.

C:\Android\Basic4Android\MiscPrograms2016\ViewPagerCorwin42Lib100\NewViewPager\Objects\bin\extra\res3\res\values-v24\values-v24.xml:4: error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Colored'.

I have all these installed:
The 3 lib files installed: .jar, xml and aar
DesignSupport Library v2.21 installed
Android Support Repository installed Rev 41
6.50 B4A
SDK 25 , 24 and SDK 23
android-support-v7-appcompat.jar
AppCompat 3.30
 

corwin42

Expert
Licensed User
Longtime User
I have all these installed:
The 3 lib files installed: .jar, xml and aar
DesignSupport Library v2.21 installed
Android Support Repository installed Rev 41
6.50 B4A
SDK 25 , 24 and SDK 23
android-support-v7-appcompat.jar
AppCompat 3.30

Use API25 android.jar (Configure Pathes in B4A IDE).

android-support-v7-appcompat.jar is not needed anymore.
 

Mahares

Expert
Licensed User
Longtime User
Use API25 android.jar (Configure Pathes in B4A IDE)
Thanks Markus. That corrected the problem.
I really liked your original AHViewPager. I hope this will exceed it. When I tested your original AHviewPager example a few years ago the total folder was only 1.4 MB. Now, with this new one the folder size is 6.9 MB. If you go to the device settings and check the size of the small example you provided installed, it shows a very high 11.5 MB. I always have a tendency to shy away from libraries that use many other resources and other libraries and the project balloons. I know devices have gotten faster and the core lib has gotten bigger. Having said all that, I like to try it.
 
Last edited:

corwin42

Expert
Licensed User
Longtime User
Now, with this new one the folder size is 6.9 MB. If you go to the device settings and check the size of the small example you provided installed, it shows a very high 11.5 MB. I always have a tendency to shy away from libraries that use many other resources and other libraries and the project balloons. I know devices have gotten faster and the core lib has gotten bigger. Having said all that, I like to try it.

The apk sizes for the example are here 1932kB for the new ViewPager version and 1940kB for the AHViewPager version. So they are quite the same. The problem is that the support libraries are getting bigger and bigger.
You can still use AHViewPager if you want but the apps will get bigger with it, too because of the growing support library. The difference between the two ViewPagers is not that big. I just wanted to create a new clean version which has all stuff to create Material Design apps with AppCompat and DesignSupport libraries.
 

gravel

Member
Licensed User
Longtime User
I should perhaps post a general question as this is probably not specifically a ViewPager issue, but ...

I've a 3 page DSTabLayout with an UltimateListView in each of the ViewPager pages. It behaves perfectly with normal scrolling behaviour. But testing abnormal behaviour (fast frequent scrolling) I find I can induce a crash giving an EGL_CONTEXT_LOST during rendering error.

Is this an inherent problem or is there something I can do about it do you think?

The example from the first post will crash with the same error also .. eventually!
02-10 18:18:27.302 I/ActivityManager(1587): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=example.newviewpager.scrollingtabs/.main (has extras)} from uid 10009 on display 0
02-10 18:18:27.306 D/audio_hw_primary(289): select_devices: done
02-10 18:18:27.340 W/BroadcastQueue(1587): Permission Denial: receiving Intent { act=com.android.launcher3.action.LAUNCH flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$GmsExternalReceiver requires com.android.launcher3.permission.RECEIVE_LAUNCH_BROADCASTS due to sender com.android.launcher3 (uid 10009)
02-10 18:18:27.341 W/BroadcastQueue(1587): Permission Denial: broadcasting Intent { act=com.android.launcher3.action.LAUNCH flg=0x10 (has extras) } from com.android.launcher3 (pid=3359, uid=10009) requires com.google.android.launcher.permission.RECEIVE_LAUNCH_BROADCASTS due to receiver com.google.android.gms/.icing.proxy.ApplicationLauncherReceiver
02-10 18:18:27.386 I/ActivityManager(1587): Start proc 5744:example.newviewpager.scrollingtabs/u0a77 for activity example.newviewpager.scrollingtabs/.main
02-10 18:18:27.454 W/System (5744): ClassLoader referenced unknown path: /data/app/example.newviewpager.scrollingtabs-1/lib/arm64
02-10 18:18:27.531 W/art (5744): Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
02-10 18:18:27.598 D/OpenGLRenderer(5744): Use EGL_SWAP_BEHAVIOR_PRESERVED: true
02-10 18:18:27.648 I/Adreno-EGL(5744): <qeglDrvAPI_eglInitialize:379>: EGL 1.4 QUALCOMM build: Nondeterministic_AU_msm8916_64_LA.BR.1.2.6_RB1__release_AU (Ia10634f51b)
02-10 18:18:27.648 I/Adreno-EGL(5744): OpenGL ES Shader Compiler Version: XE031.06.00.05
02-10 18:18:27.648 I/Adreno-EGL(5744): Build Date: 01/04/16 Mon
02-10 18:18:27.648 I/Adreno-EGL(5744): Local Branch: mybranch17585849
02-10 18:18:27.648 I/Adreno-EGL(5744): Remote Branch: quic/LA.BR.1.2.6_rb1.7
02-10 18:18:27.648 I/Adreno-EGL(5744): Local Patches: NONE
02-10 18:18:27.648 I/Adreno-EGL(5744): Reconstruct Branch: NOTHING
02-10 18:18:27.658 I/OpenGLRenderer(5744): Initialized EGL, version 1.4
02-10 18:18:27.682 I/B4A (5744): ~i:** Activity (main) Create, isFirst = true **
02-10 18:18:27.716 I/Finsky (3255): [68] com.google.android.finsky.e.f.run(1157): Replicating app states via AMAS.
02-10 18:18:27.774 W/ViewPager(5744): Requested offscreen page limit -1 too small; defaulting to 1
02-10 18:18:27.814 I/B4A (5744): ~i:** Activity (main) Resume **
02-10 18:18:27.840 I/B4A (5744): PageCreated: 0
02-10 18:18:27.840 I/B4A (5744): New Page => load the layout
02-10 18:18:27.846 I/B4A (5744): PageCreated: 1
02-10 18:18:27.846 I/B4A (5744): New Page => load the layout
02-10 18:18:27.896 I/ActivityManager(1587): Displayed example.newviewpager.scrollingtabs/.main: +520ms
02-10 18:18:27.929 I/Finsky (3255): [68] com.google.android.finsky.e.d.a(319): Completed 0 account content syncs with 0 successful.
02-10 18:18:27.930 I/Finsky (3255): [1] com.google.android.finsky.services.j.a(149): Installation state replication succeeded.
02-10 18:18:28.037 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:28.266 I/ActivityManager(1587): Waited long enough for: ServiceRecord{fb586fd u0 com.SystemCleanup.Inteks.org/.UpdateService}
02-10 18:18:29.048 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:29.140 I/B4A (5744): PageChanged: 1
02-10 18:18:29.321 I/B4A (5744): PageCreated: 2
02-10 18:18:29.321 I/B4A (5744): New Page => load the layout
02-10 18:18:29.415 I/B4A (5744): PageChanged: 2
02-10 18:18:29.596 I/B4A (5744): PageDestroyed: 0
02-10 18:18:29.598 I/B4A (5744): PageCreated: 3
02-10 18:18:29.598 I/B4A (5744): New Page => load the layout
02-10 18:18:29.668 I/B4A (5744): PageChanged: 3
02-10 18:18:29.827 I/B4A (5744): PageDestroyed: 1
02-10 18:18:29.829 I/B4A (5744): PageCreated: 4
02-10 18:18:29.829 I/B4A (5744): New Page => load the layout
02-10 18:18:29.912 I/B4A (5744): PageChanged: 4
02-10 18:18:30.039 I/B4A (5744): PageDestroyed: 2
02-10 18:18:30.043 I/B4A (5744): PageCreated: 5
02-10 18:18:30.043 I/B4A (5744): New Page => load the layout
02-10 18:18:30.047 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:30.158 I/B4A (5744): PageChanged: 5
02-10 18:18:30.304 I/B4A (5744): PageDestroyed: 3
02-10 18:18:30.306 I/B4A (5744): PageCreated: 6
02-10 18:18:30.306 I/B4A (5744): New Page => load the layout
02-10 18:18:30.397 I/B4A (5744): PageChanged: 6
02-10 18:18:30.461 D/audio_hw_primary(289): out_standby: enter: stream (0xf6736d40) usecase(1: low-latency-playback)
02-10 18:18:30.548 D/hardware_info(289): hw_info_append_hw_type : device_name = speaker
02-10 18:18:30.553 I/B4A (5744): PageDestroyed: 4
02-10 18:18:30.556 I/B4A (5744): PageCreated: 7
02-10 18:18:30.556 I/B4A (5744): New Page => load the layout
02-10 18:18:30.626 I/B4A (5744): PageChanged: 7
02-10 18:18:30.771 I/B4A (5744): PageDestroyed: 5
02-10 18:18:30.773 I/B4A (5744): PageCreated: 8
02-10 18:18:30.773 I/B4A (5744): New Page => load the layout
02-10 18:18:30.895 I/B4A (5744): PageChanged: 8
02-10 18:18:31.040 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:31.065 I/B4A (5744): PageDestroyed: 6
02-10 18:18:31.066 I/B4A (5744): PageCreated: 9
02-10 18:18:31.066 I/B4A (5744): New Page => load the layout
02-10 18:18:31.129 I/B4A (5744): PageChanged: 9
02-10 18:18:31.135 W/PlatformStatsUtil(3866): Could not retrieve Usage & Diagnostics setting. Giving up.
02-10 18:18:31.255 I/B4A (5744): PageDestroyed: 7
02-10 18:18:31.256 I/B4A (5744): PageCreated: 10
02-10 18:18:31.256 I/B4A (5744): New Page => load the layout
02-10 18:18:31.382 I/B4A (5744): PageChanged: 8
02-10 18:18:31.589 I/B4A (5744): PageCreated: 7
02-10 18:18:31.589 I/B4A (5744): Page already created => do nothing
02-10 18:18:31.589 I/B4A (5744): PageDestroyed: 10
02-10 18:18:31.667 I/B4A (5744): PageChanged: 7
02-10 18:18:31.810 I/B4A (5744): PageCreated: 6
02-10 18:18:31.810 I/B4A (5744): Page already created => do nothing
02-10 18:18:31.811 I/B4A (5744): PageDestroyed: 9
02-10 18:18:31.869 I/B4A (5744): PageChanged: 8
02-10 18:18:31.975 I/B4A (5744): PageDestroyed: 6
02-10 18:18:31.977 I/B4A (5744): PageCreated: 9
02-10 18:18:31.977 I/B4A (5744): Page already created => do nothing
02-10 18:18:32.042 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:32.045 I/B4A (5744): PageChanged: 7
02-10 18:18:32.222 I/B4A (5744): PageCreated: 6
02-10 18:18:32.223 I/B4A (5744): Page already created => do nothing
02-10 18:18:32.223 I/B4A (5744): PageDestroyed: 9
02-10 18:18:32.309 I/B4A (5744): PageChanged: 6
02-10 18:18:32.473 I/B4A (5744): PageCreated: 5
02-10 18:18:32.473 I/B4A (5744): Page already created => do nothing
02-10 18:18:32.473 I/B4A (5744): PageDestroyed: 8
02-10 18:18:32.593 I/B4A (5744): PageChanged: 5
02-10 18:18:32.705 I/B4A (5744): PageCreated: 4
02-10 18:18:32.706 I/B4A (5744): Page already created => do nothing
02-10 18:18:32.706 I/B4A (5744): PageDestroyed: 7
02-10 18:18:32.830 I/B4A (5744): PageChanged: 4
02-10 18:18:32.970 I/B4A (5744): PageCreated: 3
02-10 18:18:32.970 I/B4A (5744): Page already created => do nothing
02-10 18:18:32.970 I/B4A (5744): PageDestroyed: 6
02-10 18:18:33.030 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:33.097 I/B4A (5744): PageChanged: 3
02-10 18:18:33.222 I/B4A (5744): PageCreated: 2
02-10 18:18:33.222 I/B4A (5744): Page already created => do nothing
02-10 18:18:33.222 I/B4A (5744): PageDestroyed: 5
02-10 18:18:33.344 I/B4A (5744): PageChanged: 2
02-10 18:18:33.455 I/B4A (5744): PageCreated: 1
02-10 18:18:33.455 I/B4A (5744): Page already created => do nothing
02-10 18:18:33.455 I/B4A (5744): PageDestroyed: 4
02-10 18:18:33.576 I/B4A (5744): PageChanged: 1
02-10 18:18:33.688 I/B4A (5744): PageCreated: 0
02-10 18:18:33.688 I/B4A (5744): Page already created => do nothing
02-10 18:18:33.688 I/B4A (5744): PageDestroyed: 3
02-10 18:18:33.809 I/B4A (5744): PageChanged: 0
02-10 18:18:33.920 I/B4A (5744): PageDestroyed: 2
02-10 18:18:34.051 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:34.492 I/B4A (5744): PageChanged: 1
02-10 18:18:34.639 I/B4A (5744): PageCreated: 2
02-10 18:18:34.639 I/B4A (5744): Page already created => do nothing
02-10 18:18:34.746 I/B4A (5744): PageChanged: 2
02-10 18:18:34.914 I/B4A (5744): PageDestroyed: 0
02-10 18:18:34.916 I/B4A (5744): PageCreated: 3
02-10 18:18:34.916 I/B4A (5744): Page already created => do nothing
02-10 18:18:34.967 I/B4A (5744): PageChanged: 3
02-10 18:18:35.041 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:35.086 I/B4A (5744): PageDestroyed: 1
02-10 18:18:35.087 I/B4A (5744): PageCreated: 4
02-10 18:18:35.087 I/B4A (5744): Page already created => do nothing
02-10 18:18:35.214 I/B4A (5744): PageChanged: 4
02-10 18:18:35.337 I/B4A (5744): PageDestroyed: 2
02-10 18:18:35.339 I/B4A (5744): PageCreated: 5
02-10 18:18:35.339 I/B4A (5744): Page already created => do nothing
02-10 18:18:35.464 I/B4A (5744): PageChanged: 5
02-10 18:18:35.603 I/B4A (5744): PageDestroyed: 3
02-10 18:18:35.607 I/B4A (5744): PageCreated: 6
02-10 18:18:35.607 I/B4A (5744): Page already created => do nothing
02-10 18:18:35.664 I/B4A (5744): PageChanged: 6
02-10 18:18:35.804 I/B4A (5744): PageDestroyed: 4
02-10 18:18:35.806 I/B4A (5744): PageCreated: 7
02-10 18:18:35.806 I/B4A (5744): Page already created => do nothing
02-10 18:18:35.925 I/B4A (5744): PageChanged: 7
02-10 18:18:36.041 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:36.068 I/B4A (5744): PageDestroyed: 5
02-10 18:18:36.070 I/B4A (5744): PageCreated: 8
02-10 18:18:36.070 I/B4A (5744): Page already created => do nothing
02-10 18:18:36.163 I/B4A (5744): PageChanged: 8
02-10 18:18:36.270 I/B4A (5744): PageDestroyed: 6
02-10 18:18:36.273 I/B4A (5744): PageCreated: 9
02-10 18:18:36.273 I/B4A (5744): Page already created => do nothing
02-10 18:18:36.377 I/B4A (5744): PageChanged: 9
02-10 18:18:36.512 I/B4A (5744): PageDestroyed: 7
02-10 18:18:36.514 I/B4A (5744): PageCreated: 10
02-10 18:18:36.514 I/B4A (5744): Page already created => do nothing
02-10 18:18:36.642 I/B4A (5744): PageChanged: 10
02-10 18:18:36.760 I/B4A (5744): PageDestroyed: 8
02-10 18:18:37.047 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:37.542 I/B4A (5744): PageChanged: 9
02-10 18:18:37.671 I/B4A (5744): PageCreated: 8
02-10 18:18:37.672 I/B4A (5744): Page already created => do nothing
02-10 18:18:37.793 I/B4A (5744): PageChanged: 8
02-10 18:18:37.972 I/B4A (5744): PageCreated: 7
02-10 18:18:37.972 I/B4A (5744): Page already created => do nothing
02-10 18:18:37.972 I/B4A (5744): PageDestroyed: 10
02-10 18:18:38.037 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:38.068 I/B4A (5744): PageChanged: 7
02-10 18:18:38.205 I/B4A (5744): PageCreated: 6
02-10 18:18:38.205 I/B4A (5744): Page already created => do nothing
02-10 18:18:38.205 I/B4A (5744): PageDestroyed: 9
02-10 18:18:38.279 I/B4A (5744): PageChanged: 6
02-10 18:18:38.406 I/B4A (5744): PageCreated: 5
02-10 18:18:38.406 I/B4A (5744): Page already created => do nothing
02-10 18:18:38.406 I/B4A (5744): PageDestroyed: 8
02-10 18:18:38.506 D/NetlinkSocketObserver(1587): NeighborEvent{elapsedMs=239376, 192.168.1.254, [0004ED09AA73], RTM_NEWNEIGH, NUD_STALE}
02-10 18:18:38.529 I/B4A (5744): PageChanged: 5
02-10 18:18:38.680 I/B4A (5744): PageCreated: 4
02-10 18:18:38.680 I/B4A (5744): Page already created => do nothing
02-10 18:18:38.680 I/B4A (5744): PageDestroyed: 7
02-10 18:18:38.765 I/B4A (5744): PageChanged: 4
02-10 18:18:38.889 I/B4A (5744): PageCreated: 3
02-10 18:18:38.889 I/B4A (5744): Page already created => do nothing
02-10 18:18:38.889 I/B4A (5744): PageDestroyed: 6
02-10 18:18:39.013 I/B4A (5744): PageChanged: 3
02-10 18:18:39.036 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:39.137 I/B4A (5744): PageCreated: 2
02-10 18:18:39.138 I/B4A (5744): Page already created => do nothing
02-10 18:18:39.138 I/B4A (5744): PageDestroyed: 5
02-10 18:18:39.250 I/B4A (5744): PageChanged: 2
02-10 18:18:39.372 I/B4A (5744): PageCreated: 1
02-10 18:18:39.372 I/B4A (5744): Page already created => do nothing
02-10 18:18:39.372 I/B4A (5744): PageDestroyed: 4
02-10 18:18:39.494 I/B4A (5744): PageChanged: 1
02-10 18:18:39.639 I/B4A (5744): PageCreated: 0
02-10 18:18:39.639 I/B4A (5744): Page already created => do nothing
02-10 18:18:39.639 I/B4A (5744): PageDestroyed: 3
02-10 18:18:39.726 I/B4A (5744): PageChanged: 0
02-10 18:18:39.855 I/B4A (5744): PageDestroyed: 2
02-10 18:18:39.960 I/B4A (5744): PageChanged: 1
02-10 18:18:40.039 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:40.106 I/B4A (5744): PageCreated: 2
02-10 18:18:40.106 I/B4A (5744): Page already created => do nothing
02-10 18:18:40.209 I/B4A (5744): PageChanged: 2
02-10 18:18:40.350 I/B4A (5744): PageDestroyed: 0
02-10 18:18:40.353 I/B4A (5744): PageCreated: 3
02-10 18:18:40.353 I/B4A (5744): Page already created => do nothing
02-10 18:18:40.412 I/B4A (5744): PageChanged: 3
02-10 18:18:40.539 I/B4A (5744): PageDestroyed: 1
02-10 18:18:40.540 I/B4A (5744): PageCreated: 4
02-10 18:18:40.540 I/B4A (5744): Page already created => do nothing
02-10 18:18:40.660 I/B4A (5744): PageChanged: 4
02-10 18:18:40.793 I/B4A (5744): PageDestroyed: 2
02-10 18:18:40.796 I/B4A (5744): PageCreated: 5
02-10 18:18:40.796 I/B4A (5744): Page already created => do nothing
02-10 18:18:40.868 I/B4A (5744): PageChanged: 5
02-10 18:18:41.007 I/B4A (5744): PageDestroyed: 3
02-10 18:18:41.008 I/B4A (5744): PageCreated: 6
02-10 18:18:41.008 I/B4A (5744): Page already created => do nothing
02-10 18:18:41.037 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:41.100 I/B4A (5744): PageChanged: 6
02-10 18:18:41.221 I/B4A (5744): PageDestroyed: 4
02-10 18:18:41.223 I/B4A (5744): PageCreated: 7
02-10 18:18:41.224 I/B4A (5744): Page already created => do nothing
02-10 18:18:41.333 I/B4A (5744): PageChanged: 7
02-10 18:18:41.473 I/B4A (5744): PageDestroyed: 5
02-10 18:18:41.474 I/B4A (5744): PageCreated: 8
02-10 18:18:41.474 I/B4A (5744): Page already created => do nothing
02-10 18:18:41.534 I/B4A (5744): PageChanged: 8
02-10 18:18:41.721 I/B4A (5744): PageDestroyed: 6
02-10 18:18:41.723 I/B4A (5744): PageCreated: 9
02-10 18:18:41.723 I/B4A (5744): Page already created => do nothing
02-10 18:18:41.831 I/B4A (5744): PageChanged: 7
02-10 18:18:41.956 I/B4A (5744): PageCreated: 6
02-10 18:18:41.956 I/B4A (5744): Page already created => do nothing
02-10 18:18:41.956 I/B4A (5744): PageDestroyed: 9
02-10 18:18:42.030 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:42.064 I/B4A (5744): PageChanged: 6
02-10 18:18:42.206 I/B4A (5744): PageCreated: 5
02-10 18:18:42.206 I/B4A (5744): Page already created => do nothing
02-10 18:18:42.206 I/B4A (5744): PageDestroyed: 8
02-10 18:18:42.317 I/B4A (5744): PageChanged: 5
02-10 18:18:42.456 I/B4A (5744): PageCreated: 4
02-10 18:18:42.456 I/B4A (5744): Page already created => do nothing
02-10 18:18:42.456 I/B4A (5744): PageDestroyed: 7
02-10 18:18:42.546 I/B4A (5744): PageChanged: 4
02-10 18:18:42.657 I/B4A (5744): PageCreated: 3
02-10 18:18:42.657 I/B4A (5744): Page already created => do nothing
02-10 18:18:42.657 I/B4A (5744): PageDestroyed: 6
02-10 18:18:42.762 I/B4A (5744): PageChanged: 3
02-10 18:18:42.906 I/B4A (5744): PageCreated: 2
02-10 18:18:42.906 I/B4A (5744): Page already created => do nothing
02-10 18:18:42.906 I/B4A (5744): PageDestroyed: 5
02-10 18:18:42.993 I/B4A (5744): PageChanged: 2
02-10 18:18:43.042 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:43.105 I/B4A (5744): PageCreated: 1
02-10 18:18:43.105 I/B4A (5744): Page already created => do nothing
02-10 18:18:43.105 I/B4A (5744): PageDestroyed: 4
02-10 18:18:43.242 I/B4A (5744): PageChanged: 1
02-10 18:18:43.356 I/B4A (5744): PageCreated: 0
02-10 18:18:43.356 I/B4A (5744): Page already created => do nothing
02-10 18:18:43.357 I/B4A (5744): PageDestroyed: 3
02-10 18:18:43.476 I/B4A (5744): PageChanged: 0
02-10 18:18:43.617 I/B4A (5744): PageDestroyed: 2
02-10 18:18:43.681 I/B4A (5744): PageChanged: 1
02-10 18:18:43.822 I/B4A (5744): PageCreated: 2
02-10 18:18:43.822 I/B4A (5744): Page already created => do nothing
02-10 18:18:43.913 I/B4A (5744): PageChanged: 2
02-10 18:18:44.038 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:44.076 I/B4A (5744): PageDestroyed: 0
02-10 18:18:44.078 I/B4A (5744): PageCreated: 3
02-10 18:18:44.078 I/B4A (5744): Page already created => do nothing
02-10 18:18:44.142 I/B4A (5744): PageChanged: 3
02-10 18:18:44.270 I/B4A (5744): PageDestroyed: 1
02-10 18:18:44.274 I/B4A (5744): PageCreated: 4
02-10 18:18:44.274 I/B4A (5744): Page already created => do nothing
02-10 18:18:44.381 I/B4A (5744): PageChanged: 4
02-10 18:18:44.516 I/B4A (5744): PageDestroyed: 2
02-10 18:18:44.517 I/B4A (5744): PageCreated: 5
02-10 18:18:44.517 I/B4A (5744): Page already created => do nothing
02-10 18:18:44.580 I/B4A (5744): PageChanged: 5
02-10 18:18:44.705 I/B4A (5744): PageDestroyed: 3
02-10 18:18:44.706 I/B4A (5744): PageCreated: 6
02-10 18:18:44.706 I/B4A (5744): Page already created => do nothing
02-10 18:18:44.826 I/B4A (5744): PageChanged: 6
02-10 18:18:44.955 I/B4A (5744): PageDestroyed: 4
02-10 18:18:44.957 I/B4A (5744): PageCreated: 7
02-10 18:18:44.957 I/B4A (5744): Page already created => do nothing
02-10 18:18:45.047 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:45.049 I/B4A (5744): PageChanged: 7
02-10 18:18:45.173 I/B4A (5744): PageDestroyed: 5
02-10 18:18:45.175 I/B4A (5744): PageCreated: 8
02-10 18:18:45.175 I/B4A (5744): Page already created => do nothing
02-10 18:18:45.259 I/B4A (5744): PageChanged: 8
02-10 18:18:45.371 I/B4A (5744): PageDestroyed: 6
02-10 18:18:45.373 I/B4A (5744): PageCreated: 9
02-10 18:18:45.373 I/B4A (5744): Page already created => do nothing
02-10 18:18:45.480 I/B4A (5744): PageChanged: 9
02-10 18:18:45.607 I/B4A (5744): PageDestroyed: 7
02-10 18:18:45.609 I/B4A (5744): PageCreated: 10
02-10 18:18:45.609 I/B4A (5744): Page already created => do nothing
02-10 18:18:45.676 I/B4A (5744): PageChanged: 10
02-10 18:18:45.805 I/B4A (5744): PageDestroyed: 8
02-10 18:18:46.034 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:46.129 I/B4A (5744): PageChanged: 9
02-10 18:18:46.273 I/B4A (5744): PageCreated: 8
02-10 18:18:46.273 I/B4A (5744): Page already created => do nothing
02-10 18:18:46.378 I/B4A (5744): PageChanged: 8
02-10 18:18:46.569 I/B4A (5744): PageCreated: 7
02-10 18:18:46.569 I/B4A (5744): Page already created => do nothing
02-10 18:18:46.569 I/B4A (5744): PageDestroyed: 10
02-10 18:18:46.643 I/B4A (5744): PageChanged: 7
02-10 18:18:46.793 I/B4A (5744): PageCreated: 6
02-10 18:18:46.793 I/B4A (5744): Page already created => do nothing
02-10 18:18:46.793 I/B4A (5744): PageDestroyed: 9
02-10 18:18:46.865 I/B4A (5744): PageChanged: 6
02-10 18:18:46.989 I/B4A (5744): PageCreated: 5
02-10 18:18:46.990 I/B4A (5744): Page already created => do nothing
02-10 18:18:46.990 I/B4A (5744): PageDestroyed: 8
02-10 18:18:47.039 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:47.063 I/ActivityManager(1587): Killing 4226:com.android.providers.calendar/u0a1 (adj 15): empty #17
02-10 18:18:47.071 W/GCM-DMM (3830): broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.solentships (has extras) }
02-10 18:18:47.079 I/B4A (5744): PageChanged: 5
02-10 18:18:47.094 I/ActivityManager(1587): Killing 3122:com.cyanogenmod.lockclock/u0a50 (adj 15): empty #18
02-10 18:18:47.205 I/B4A (5744): PageCreated: 4
02-10 18:18:47.205 I/B4A (5744): Page already created => do nothing
02-10 18:18:47.205 I/B4A (5744): PageDestroyed: 7
02-10 18:18:47.296 I/B4A (5744): PageChanged: 4
02-10 18:18:47.420 I/B4A (5744): PageCreated: 3
02-10 18:18:47.420 I/B4A (5744): Page already created => do nothing
02-10 18:18:47.420 I/B4A (5744): PageDestroyed: 6
02-10 18:18:47.525 I/B4A (5744): PageChanged: 3
02-10 18:18:47.639 I/B4A (5744): PageCreated: 2
02-10 18:18:47.639 I/B4A (5744): Page already created => do nothing
02-10 18:18:47.639 I/B4A (5744): PageDestroyed: 5
02-10 18:18:47.747 I/B4A (5744): PageChanged: 2
02-10 18:18:47.872 I/B4A (5744): PageCreated: 1
02-10 18:18:47.872 I/B4A (5744): Page already created => do nothing
02-10 18:18:47.873 I/B4A (5744): PageDestroyed: 4
02-10 18:18:47.979 I/B4A (5744): PageChanged: 1
02-10 18:18:48.043 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:48.089 I/B4A (5744): PageCreated: 0
02-10 18:18:48.089 I/B4A (5744): Page already created => do nothing
02-10 18:18:48.089 I/B4A (5744): PageDestroyed: 3
02-10 18:18:48.217 I/B4A (5744): PageChanged: 0
02-10 18:18:48.281 D/WifiStateMachine(1587): starting scan for "Wapplication"WPA_PSK with 2437
02-10 18:18:48.336 I/B4A (5744): PageDestroyed: 2
02-10 18:18:48.676 I/B4A (5744): PageChanged: 1
02-10 18:18:48.844 I/B4A (5744): PageCreated: 2
02-10 18:18:48.844 I/B4A (5744): Page already created => do nothing
02-10 18:18:48.910 I/B4A (5744): PageChanged: 2
02-10 18:18:49.040 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:49.055 I/B4A (5744): PageDestroyed: 0
02-10 18:18:49.060 I/B4A (5744): PageCreated: 3
02-10 18:18:49.060 I/B4A (5744): Page already created => do nothing
02-10 18:18:49.829 I/B4A (5744): PageDestroyed: 1
02-10 18:18:49.830 I/B4A (5744): PageCreated: 4
02-10 18:18:49.830 I/B4A (5744): Page already created => do nothing
02-10 18:18:49.831 I/B4A (5744): PageDestroyed: 2
02-10 18:18:49.832 I/B4A (5744): PageCreated: 5
02-10 18:18:49.832 I/B4A (5744): Page already created => do nothing
02-10 18:18:49.834 I/B4A (5744): PageDestroyed: 3
02-10 18:18:49.835 I/B4A (5744): PageCreated: 6
02-10 18:18:49.835 I/B4A (5744): Page already created => do nothing
02-10 18:18:49.837 I/Choreographer(5744): Skipped 44 frames! The application may be doing too much work on its main thread.
02-10 18:18:50.028 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:51.029 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:51.972 W/Adreno-GSL(5744): <gsl_ldd_control:475>: ioctl fd 21 code 0x400c0907 (IOCTL_KGSL_DEVICE_WAITTIMESTAMP_CTXTID) failed: errno 35 Resource deadlock would occur
02-10 18:18:51.972 W/Adreno-GSL(5744): <log_gpu_snapshot:384>: panel.gpuSnapshotPath is not set.not generating user snapshot
02-10 18:18:51.972 W/Adreno-EGLSUB(5744): <updater_thread:428>: waitFunc failed
02-10 18:18:51.974 I/InputDispatcher(1587): Window 'Window{a04d861 u0 example.newviewpager.scrollingtabs/example.newviewpager.scrollingtabs.main}' spent 2034.5ms processing the last input event: MotionEvent(deviceId=10, source=0x00001002, action=0, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (672.1, 713.4)]), policyFlags=0x67000000
02-10 18:18:51.975 I/InputDispatcher(1587): Window 'Window{a04d861 u0 example.newviewpager.scrollingtabs/example.newviewpager.scrollingtabs.main}' spent 2014.3ms processing the last input event: MotionEvent(deviceId=10, source=0x00001002, action=2, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (632.1, 722.4)]), policyFlags=0x67000000
02-10 18:18:51.976 I/InputDispatcher(1587): Window 'Window{a04d861 u0 example.newviewpager.scrollingtabs/example.newviewpager.scrollingtabs.main}' spent 2004.2ms processing the last input event: MotionEvent(deviceId=10, source=0x00001002, action=2, actionButton=0x00000000, flags=0x00000000, metaState=0x00000000, buttonState=0x00000000, edgeFlags=0x00000000, xPrecision=1.0, yPrecision=1.0, displayId=0, pointers=[0: (552.2, 738.4)]), policyFlags=0x67000000
02-10 18:18:51.976 W/Adreno-GSL(5744): <gsl_ldd_control:475>: ioctl fd 21 code 0xc038093d (IOCTL_KGSL_SUBMIT_COMMANDS) failed: errno 35 Resource deadlock would occur
02-10 18:18:51.976 W/Adreno-GSL(5744): <log_gpu_snapshot:384>: panel.gpuSnapshotPath is not set.not generating user snapshot
02-10 18:18:51.976 W/Adreno-GSL(5744): <gsl_ldd_control:475>: ioctl fd 21 code 0xc038093d (IOCTL_KGSL_SUBMIT_COMMANDS) failed: errno 35 Resource deadlock would occur
02-10 18:18:51.976 W/Adreno-GSL(5744): <log_gpu_snapshot:384>: panel.gpuSnapshotPath is not set.not generating user snapshot
02-10 18:18:51.977 I/B4A (5744): PageDestroyed: 4
02-10 18:18:51.977 W/Adreno-GSL(5744): <gsl_ldd_control:475>: ioctl fd 21 code 0xc038093d (IOCTL_KGSL_SUBMIT_COMMANDS) failed: errno 35 Resource deadlock would occur
02-10 18:18:51.977 W/Adreno-GSL(5744): <log_gpu_snapshot:384>: panel.gpuSnapshotPath is not set.not generating user snapshot
02-10 18:18:51.977 W/Adreno-EGL(5744): <qeglDrvAPI_eglSwapBuffers:3796>: EGL_CONTEXT_LOST
02-10 18:18:51.977 F/OpenGLRenderer(5744): Encountered EGL error 12302 EGL_CONTEXT_LOST during rendering
--------- beginning of crash
02-10 18:18:51.977 F/libc (5744): Fatal signal 6 (SIGABRT), code -6 in tid 5758 (RenderThread)
02-10 18:18:51.977 I/B4A (5744): PageCreated: 7
02-10 18:18:51.977 I/B4A (5744): Page already created => do nothing
02-10 18:18:51.978 I/DEBUG (286): property debug.db.uid not set; NOT waiting for gdb.
02-10 18:18:51.978 I/DEBUG (286): HINT: adb shell setprop debug.db.uid 100000
02-10 18:18:51.978 I/DEBUG (286): HINT: adb forward tcp:5039 tcp:5039
02-10 18:18:51.979 I/B4A (5744): PageChanged: 3
02-10 18:18:51.979 I/B4A (5744): PageDestroyed: 5
02-10 18:18:51.980 I/B4A (5744): PageCreated: 8
02-10 18:18:51.980 I/B4A (5744): Page already created => do nothing
02-10 18:18:51.982 I/B4A (5744): PageDestroyed: 6
02-10 18:18:51.983 I/B4A (5744): PageCreated: 9
02-10 18:18:51.983 I/B4A (5744): Page already created => do nothing
02-10 18:18:51.984 I/B4A (5744): PageCreated: 6
02-10 18:18:51.984 I/B4A (5744): Page already created => do nothing
02-10 18:18:51.984 I/B4A (5744): PageDestroyed: 9
02-10 18:18:51.987 I/B4A (5744): PageCreated: 5
02-10 18:18:51.987 I/B4A (5744): Page already created => do nothing
02-10 18:18:51.987 I/B4A (5744): PageDestroyed: 8
02-10 18:18:51.989 I/B4A (5744): PageChanged: 4
02-10 18:18:51.990 I/B4A (5744): PageChanged: 5
02-10 18:18:51.990 I/Choreographer(5744): Skipped 128 frames! The application may be doing too much work on its main thread.
02-10 18:18:51.990 I/B4A (5744): PageCreated: 4
02-10 18:18:51.990 I/B4A (5744): Page already created => do nothing
02-10 18:18:51.990 I/B4A (5744): PageDestroyed: 7
02-10 18:18:52.019 D/NetlinkSocketObserver(1587): NeighborEvent{elapsedMs=252890, 192.168.1.254, [0004ED09AA73], RTM_NEWNEIGH, NUD_PROBE}
02-10 18:18:52.024 W/ctxmgr (3830): [AclManager]No 2 for (accnt=account#880170955#, com.google.android.gms(10013):UserLocationProducer, vrsn=10298000, 0, 3pPkg = null , 3pMdlId = null). Was: 2 for 1, account#880170955#
02-10 18:18:52.080 F/DEBUG (286): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-10 18:18:52.080 F/DEBUG (286): Build fingerprint: 'Wileyfox/Swift/crackling:6.0.1/MTC20L/eng.alex.20160910.095738:userdebug/test-keys'
02-10 18:18:52.080 F/DEBUG (286): Revision: '0'
02-10 18:18:52.080 F/DEBUG (286): ABI: 'arm64'
02-10 18:18:52.080 F/DEBUG (286): pid: 5744, tid: 5758, name: RenderThread >>> example.newviewpager.scrollingtabs <<<
02-10 18:18:52.080 F/DEBUG (286): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
02-10 18:18:52.099 F/DEBUG (286): Abort message: 'Encountered EGL error 12302 EGL_CONTEXT_LOST during rendering'
02-10 18:18:52.099 F/DEBUG (286): x0 0000000000000000 x1 000000000000167e x2 0000000000000006 x3 0000000000000000
02-10 18:18:52.099 F/DEBUG (286): x4 0000000000000000 x5 0000000000000001 x6 0000000000000000 x7 0000000000000000
02-10 18:18:52.099 F/DEBUG (286): x8 0000000000000083 x9 000000000000004e x10 0000007fb2ebebdc x11 0000007fb2ebec18
02-10 18:18:52.099 F/DEBUG (286): x12 0000007fb2ebeaf0 x13 000000000000003e x14 0000007fb2ebecc8 x15 0000000000000000
02-10 18:18:52.099 F/DEBUG (286): x16 0000007fb77f3568 x17 0000007fb778617c x18 0000007fb7b7880c x19 0000007fb2ebf500
02-10 18:18:52.099 F/DEBUG (286): x20 0000007fb2ebf440 x21 0000000000000023 x22 0000000000000006 x23 0000007fb2ecf8c8
02-10 18:18:52.099 F/DEBUG (286): x24 0000007fb2ece000 x25 0000007fabf863b0 x26 00000000ffffffff x27 0000007fb466a7f0
02-10 18:18:52.099 F/DEBUG (286): x28 0000007fa04bad20 x29 0000007fb2ebeb80 x30 0000007fb7783918
02-10 18:18:52.099 F/DEBUG (286): sp 0000007fb2ebeb80 pc 0000007fb7786184 pstate 0000000020000000
02-10 18:18:52.109 F/DEBUG (286):
02-10 18:18:52.109 F/DEBUG (286): backtrace:
02-10 18:18:52.109 F/DEBUG (286): #00 pc 0000000000069184 /system/lib64/libc.so (tgkill+8)
02-10 18:18:52.109 F/DEBUG (286): #01 pc 0000000000066914 /system/lib64/libc.so (pthread_kill+68)
02-10 18:18:52.109 F/DEBUG (286): #02 pc 0000000000023878 /system/lib64/libc.so (raise+28)
02-10 18:18:52.110 F/DEBUG (286): #03 pc 000000000001e018 /system/lib64/libc.so (abort+60)
02-10 18:18:52.110 F/DEBUG (286): #04 pc 000000000000d2e0 /system/lib64/libcutils.so (__android_log_assert+236)
02-10 18:18:52.110 F/DEBUG (286): #05 pc 00000000000283c8 /system/lib64/libhwui.so
02-10 18:18:52.110 F/DEBUG (286): #06 pc 0000000000024b08 /system/lib64/libhwui.so
02-10 18:18:52.110 F/DEBUG (286): #07 pc 0000000000027060 /system/lib64/libhwui.so
02-10 18:18:52.110 F/DEBUG (286): #08 pc 000000000002b3e0 /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+124)
02-10 18:18:52.110 F/DEBUG (286): #09 pc 000000000001686c /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+208)
02-10 18:18:52.110 F/DEBUG (286): #10 pc 000000000008f8e0 /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+96)
02-10 18:18:52.110 F/DEBUG (286): #11 pc 00000000000160bc /system/lib64/libutils.so
02-10 18:18:52.110 F/DEBUG (286): #12 pc 0000000000065d64 /system/lib64/libc.so (_ZL15__pthread_startPv+52)
02-10 18:18:52.110 F/DEBUG (286): #13 pc 000000000001ebc4 /system/lib64/libc.so (__start_thread+16)
02-10 18:18:52.303 F/DEBUG (286):
02-10 18:18:52.303 F/DEBUG (286): Tombstone written to: /data/tombstones/tombstone_06
02-10 18:18:52.303 E/DEBUG (286): AM write failed: Broken pipe
02-10 18:18:52.303 I/BootReceiver(1587): Copying /data/tombstones/tombstone_06 to DropBox (SYSTEM_TOMBSTONE)
02-10 18:18:52.309 W/ActivityManager(1587): Force finishing activity example.newviewpager.scrollingtabs/.main
02-10 18:18:52.322 D/GraphicsStats(1587): Buffer count: 6
02-10 18:18:52.324 W/InputDispatcher(1587): channel 'a04d861 example.newviewpager.scrollingtabs/example.newviewpager.scrollingtabs.main (server)' ~ Consumer closed input channel or an error occurred. events=0xd
02-10 18:18:52.324 E/InputDispatcher(1587): channel 'a04d861 example.newviewpager.scrollingtabs/example.newviewpager.scrollingtabs.main (server)' ~ Channel is unrecoverably broken and will be disposed!
02-10 18:18:52.324 I/Zygote (318): Process 5744 exited due to signal (6)
02-10 18:18:52.329 I/WindowState(1587): WIN DEATH: Window{a04d861 u0 example.newviewpager.scrollingtabs/example.newviewpager.scrollingtabs.main}
02-10 18:18:52.329 W/InputDispatcher(1587): Attempted to unregister already unregistered input channel 'a04d861 example.newviewpager.scrollingtabs/example.newviewpager.scrollingtabs.main (server)'
02-10 18:18:52.332 W/ActivityManager(1587): Exception thrown during pause
02-10 18:18:52.332 W/ActivityManager(1587): android.os.DeadObjectException
02-10 18:18:52.332 W/ActivityManager(1587): at android.os.BinderProxy.transactNative(Native Method)
02-10 18:18:52.332 W/ActivityManager(1587): at android.os.BinderProxy.transact(Binder.java:503)
02-10 18:18:52.332 W/ActivityManager(1587): at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:727)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:867)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2910)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2766)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2767)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:12127)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:11998)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:12712)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:12219)
02-10 18:18:52.332 W/ActivityManager(1587): at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86)
02-10 18:18:52.339 E/lowmemorykiller(272): Error opening /proc/5744/oom_score_adj; errno=2
02-10 18:18:52.367 I/ActivityManager(1587): Process example.newviewpager.scrollingtabs (pid 5744) has died
02-10 18:18:52.389 I/OpenGLRenderer(1587): Initialized EGL, version 1.4
02-10 18:18:52.853 W/WindowAnimator(1587): Failed to dispatch window animation state change.
02-10 18:18:52.853 W/WindowAnimator(1587): android.os.DeadObjectException
02-10 18:18:52.853 W/WindowAnimator(1587): at android.os.BinderProxy.transactNative(Native Method)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.os.BinderProxy.transact(Binder.java:503)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.view.IWindow$Stub$Proxy.onAnimationStopped(IWindow.java:534)
02-10 18:18:52.853 W/WindowAnimator(1587): at com.android.server.wm.WindowAnimator.updateWindowsLocked(WindowAnimator.java:287)
02-10 18:18:52.853 W/WindowAnimator(1587): at com.android.server.wm.WindowAnimator.animateLocked(WindowAnimator.java:679)
02-10 18:18:52.853 W/WindowAnimator(1587): at com.android.server.wm.WindowAnimator.-wrap0(WindowAnimator.java)
02-10 18:18:52.853 W/WindowAnimator(1587): at com.android.server.wm.WindowAnimator$1.doFrame(WindowAnimator.java:124)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.view.Choreographer.doCallbacks(Choreographer.java:670)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.view.Choreographer.doFrame(Choreographer.java:603)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.os.Handler.handleCallback(Handler.java:739)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.os.Handler.dispatchMessage(Handler.java:95)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.os.Looper.loop(Looper.java:148)
02-10 18:18:52.853 W/WindowAnimator(1587): at android.os.HandlerThread.run(HandlerThread.java:61)
02-10 18:18:52.853 W/WindowAnimator(1587): at com.android.server.ServiceThread.run(ServiceThread.java:46)
 

corwin42

Expert
Licensed User
Longtime User
I should perhaps post a general question as this is probably not specifically a ViewPager issue, but ...

I've a 3 page DSTabLayout with an UltimateListView in each of the ViewPager pages. It behaves perfectly with normal scrolling behaviour. But testing abnormal behaviour (fast frequent scrolling) I find I can induce a crash giving an EGL_CONTEXT_LOST during rendering error.

Is this an inherent problem or is there something I can do about it do you think?

The example from the first post will crash with the same error also .. eventually!

With which Android version do you get this error?
I don't think that there will be a workaround.
 

gravel

Member
Licensed User
Longtime User
With which Android version do you get this error?
I've tried it on a 6.0.1 device (the one that the log came from - Cyanogenmod) and on a really low end 4.4.4 device.

I don't think that there will be a workaround.

You do have to scroll VERY vigorously to provoke it, but if that is the case then I'll have to reconsider how I do it.
 

wimpie3

Well-Known Member
Licensed User
Longtime User
I have noticed there is some kind of lag between the events SCROLLSTATE_SETTLING and SCROLLSTATE_IDLE. The viewpager has already settled in for about 500ms before SCROLLSTATE_IDLE is called. Is there a way to influence this, like changing the scroll speed?
 

corwin42

Expert
Licensed User
Longtime User
The viewpager has already settled in for about 500ms before SCROLLSTATE_IDLE is called. Is there a way to influence this, like changing the scroll speed?
No, you can't change this.
 

GuyBooth

Active Member
Licensed User
Longtime User
Usage:
Usage is very similar to AHViewPager though I never really explained AHViewPager in detail. So here we go:

Adding a page does create a VPage object. This object contains a title, can hold a tag object for storing additional data and has a Panel. The Panel is initialized when a page is added but it is not added to any layout so it has no size at this time and a layout can not be loaded immediately. Loading a layout is done in the PageCreated event.

I have been using AHViewPager in one app for several years now without any problems, but when I try to update it to use this new version, I cannot get it to work.
In a simple example (loading by code not from the designer, without the appcompat and other addins in corwin's example), I can make it work. But when I transport the code into my not-simple-at-all app I simply cannot get the _PageCreated event to fire, and therefore cannot move to the next stage of loading a layout into my app.
Exactly what is supposed to cause _Page_Created to fire? What triggers it? I thought it was the PC.Addpage method, but in my app nothing happens.
 

corwin42

Expert
Licensed User
Longtime User
So, this basically means that if you want different layouts per page, you need to detect the position of the layout to add the layout that you want at that position?

The Signature of the VP_PageCreated is wrong.
It is like this:
B4X:
Sub VP_PageCreated (Position As Int, Page As VPage)
    Log("PageCreated: " & Position)
    If Page.AlreadyCreated = True Then
        Log("Page already created => do nothing")
    Else
        Log("New Page => load the layout")
        'We load a simple layout file here.
        Page.Panel.LoadLayout("pagelayout")
        Page.Panel.Color = Colors.RGB(Rnd(0,256), Rnd(0,256), Rnd(0,256))
        Label1.Text = Page.Title
    End If
End Sub

The second parameter is a VPage object. You can access the pages content panel with Page.Panel as in the above example.

To your question: Yes.
 

roberto64

Active Member
Licensed User
Longtime User
Hi, someone can help me to solve this problem, I created a menu with a ViewPager and PageContainer as an example that I attach, what I would like to do and that once chosen a vice menu you must clean PageContainer and once selected an entry from menu must open another mask.
regards
 

Attachments

  • MemSms.zip
    109.4 KB · Views: 321

ermiakhan

Member
B4X:
B4A Version: 9.80
Java Version: 8
Parsing code.    (0.00s)
Building folders structure.    (0.01s)
Compiling code.    (0.03s)
Compiling layouts code.    (0.03s)
Organizing libraries.    (0.00s)
    (AndroidX SDK)
Generating R file.    Error
d:\7\sdk\sdk\sdk\tools\..\extras\b4a_remote\androidx\appcompat\appcompat\1.1.0\unpacked-appcompat-1.1.0\res\values\values.xml:1722: error: Attribute "icon" has already been defined
d:\7\sdk\sdk\sdk\tools\..\extras\b4a_remote\androidx\appcompat\appcompat\1.1.0\unpacked-appcompat-1.1.0\res\values\values.xml:1929: error: Attribute "fontVariationSettings" has already been defined
d:\7\sdk\sdk\sdk\tools\..\extras\b4a_remote\androidx\appcompat\appcompat\1.1.0\unpacked-appcompat-1.1.0\res\values\values.xml:2597: error: Attribute "iconTint" has already been defined
d:\7\sdk\sdk\sdk\tools\..\extras\b4a_remote\androidx\appcompat\appcompat\1.1.0\unpacked-appcompat-1.1.0\res\values\values.xml:2675: error: Attribute "closeIcon" has already been defined
d:\7\sdk\sdk\sdk\tools\..\extras\b4a_remote\androidx\appcompat\appcompat\1.1.0\unpacked-appcompat-1.1.0\res\values\values.xml:2863: error: Attribute "menu" has already been defined

ideas?
 

Zlgo

Member
Hi
I just want to try example "NewPageExample" but it crash at beginning with this report:

** Activity (main) Create, isFirst = true **
Panel size is unknown. Layout may not be loaded correctly.
Panel size is unknown. Layout may not be loaded correctly.
Error occurred on line: 57 (Main)
java.lang.IllegalStateException: The pager's adapter has to implement ViewPagerTabProvider.
at de.amberhome.viewpager.internal.ViewPagerTabs.setViewPager(ViewPagerTabs.java:157)
at de.amberhome.viewpager.AHViewPagerTabs.Initialize(AHViewPagerTabs.java:30)
at com.viewpager.com.main._activity_create(main.java:427)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:732)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:351)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:255)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:144)
at com.viewpager.com.main.afterFirstLayout(main.java:105)
at com.viewpager.com.main.access$000(main.java:17)
at com.viewpager.com.main$WaitForLayout.run(main.java:83)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
** Activity (main) Resume **

This I run on B4A ver. 9.9
 
Top