Android :: MotionEvent And KeyEvent Causing Excessive Garbage Collect (GC) Calls
Jan 3, 2010
I'm running into some issues with input events and garbage collection, or more precisely object allocation. I am creating a game and have pretty much got my head around the OpenGL environment. I've digested all the relevant material I could find regarding performance, memory allocation etc (and watched the excellent presentation by Chris Pruett - http://code.google.com/events/io/2009/sessions/WritingRealTimeGamesAn...). I've pretty much eliminated any object allocations after initial setup from my game (which is still in its infancy), but I'm still getting a bunch of GC calls, like this:...........................
View 6 Replies
Aug 1, 2010
I'm trying to update part of a VBO with a call to glBufferSubData(). When I update from the start (0) of my existing shadow buffer, there is no problem, as the buffer starts reading from 0. The following will read 0 to y from the buffer and place it at 0 to y in the VBO: gl.glBufferSubData(GL11.GL_ARRAY_BUFFER, 0, y, mPositionBuffer);
However, if I want to update a portion of the VBO (not from 0) I run into a problem; The following doesn't work, since it will write the values from the start of the buffer (0 to y) into position x to x+y of the VBO:........................
View 1 Replies
View Related
Apr 13, 2009
In my ListView, there's one line of code in my ViewBinder that causes lots of garbage collection as I scroll through the list, about every two seconds...
D/dalvikvm(16312): GC freed 13171 objects / 659576 bytes in 162ms D/dalvikvm(16312): GC freed 13122 objects / 654128 bytes in 129ms D/dalvikvm(16312): GC freed 13134 objects / 655416 bytes in 142ms D/dalvikvm(16312): GC freed 13129 objects / 654840 bytes in 129ms D/dalvikvm(16312): GC freed 13149 objects / 655000 bytes in 110ms D/dalvikvm(16312): GC freed 13150 objects / 655720 bytes in 127ms D/dalvikvm(16312): GC freed 13075 objects / 652256 bytes in 111ms D/dalvikvm(16312): GC freed 13232 objects / 659040 bytes in 136ms D/dalvikvm(16312): GC freed 13106 objects / 653920 bytes in 110ms D/dalvikvm(16312): GC freed 13155 objects / 655152 bytes in 110ms
The offending code is here, which formats a price for each item in the list: String price = cursor.getString(columnIndex); final float pricef = Float.parseFloat(price); price = new StringBuffer("$").append(String.format("%. 2f",pricef)).toString(); ((TextView)view).setText(price);
If I comment out the line with String.format, the garbage collection goes away. So what's the "right" way to do this to avoid allocations? That database field holds an unformatted text string which I'm trying to format into proper currency format (example: format "1.5" to "$1.50")
View 9 Replies
View Related
Jun 25, 2010
I have the Plantronics Voyager PRO and it loses sync with incoming calls? Any idea what is causing this?
View 1 Replies
View Related
Jun 2, 2010
Can someone point me to documentation with the definitions / meanings (i.e., what action is expected to be performed) for the KeyEvents? Aside from the obviouse KEYCODE_A to KEYCODE_Z, etc. there are some that I don't understand and I cannot find any mention anywhere on the web ?! Specifically the following, but generally all of them: KEYCODE_EXPLORER KEYCODE_ENVELOPE. Also, is there a meta-key to dismiss the keyboard via an injected KeyEvent?
View 2 Replies
View Related
Sep 1, 2010
1. what is the getKeyDownTime() method? What does its return value mean logically? 2. what is the getKeyEventTime() method? What does its return value mean logiccaly? 3. I want to measure the time a key was depressed for. Eg: Key A was pressed for 60 ms. which of the above methods would be useful?
View 7 Replies
View Related
Nov 12, 2010
my goal is to target with a keyevent a specific application running either in foreground or background from a background service. I tried many solutions, but have not yet managed to do it. The few solutions tried (all from a background running service): With a broadcast, I tried to target the first application (for example the phone app) that would manage the key event
KeyEvent lKey1Up = new KeyEvent(KeyEvent.ACTION_UP,KeyEvent.KEYCODE_ENDCALL);
KeyEvent lKey1Dwn = new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENDCALL);
Intent lKey1UpIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
Intent lKey1DwnIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
lKey1UpIntent.putExtra(Intent.EXTRA_KEY_EVENT, lKey1Up);
lKey1DwnIntent.putExtra(Intent.EXTRA_KEY_EVENT, lKey1Dwn );
sendOrderedBroadcast(lKey1UpIntent, null);
sendOrderedBroadcast(lKey1DwnIntent, null);
=> Nothing happens with my foreground phone app when the broadcast is performed while I am in a phone call state (OFFHOOK). Indeed, I was nearly sure this would not work since I have no way to specificely target the phone app.............
View 1 Replies
View Related
Apr 26, 2009
When I Override onKeyDown in a MapActivity I have a problem with KeyEvent.KEYCODE_PLUS. When running my app "+" just don't work. The same code works for any key but KeyEvent.KEYCODE_PLUS. In log I get W/KeyCharacterMap( 725): No keyboard fo id 0 W/KeyCharacterMap( 725): Using default keymap: /system/usr/keychars/qwerty.kcm.bin. I am working with a Hp Laptop with US qwerty keyboard and Kubuntu 8.04.
View 4 Replies
View Related
Jan 28, 2009
how to reject an incoming call. At first, i wanna find some method already exists that can directly reject a phone call, but unluckily i failed. now i come up with an idea ,to simulate a ENDCALL KeyEvent. here is one solution to achieve it
IWindowManager.injectKeyEvent(...);
It may work in earlier version sdk... I didn't find any method like that in latest version sdk~ is there any method exists to simulate a KeyEvent ? or how could i reject an incoming phone call?
View 2 Replies
View Related
May 29, 2009
I've got something simple where I want to raise an AlertDialog after catching this keypress:
CODE:............................
The interesting thing here is that when you hit the back button, you *do* see the AlertDialog for a split second, but then you're back at the previous screen you were at. Almost as if the system is hellbent on sending the user back to the previous screen, regardless of what the developer has constructed around this event. I'm using 1.5r2 here.
View 6 Replies
View Related
Jul 28, 2010
Is it safe to use 3rd party Keyboards, (such as Big Buttons etc)? I only ask as i installed a keyboard app, went to enable it but it came up with information saying it collects credit card data and password data.. Wasn't comfortable with this so cancelled enabling it and uninstalled.. I need a keyboard as the one on my phone is pretty good but a bit too small. Can anyone shed a little light on this and recommend me a Big keyboard for the Pulse mini
View 3 Replies
View Related
May 2, 2009
bellow just a test sample source for a background thread. i would like that when my app is closed it still run in the background (like at my tracks) to collect data even when it is closed. but it always dies after a while by itself, why?...........
View 4 Replies
View Related
Aug 11, 2010
There's a bug in my network code so that when the server's not available the Android client tries over and over to connect. On 1.5 (emulator) this results, within a minute, in an "Excessive JNI global references" error where the leaked object is a small (20 byte) boolean array. The same code on emulated 2.1 runs for as long as my patience lasts. Is there any possibility the leak is in my code and not an Android bug that's been fixed since 1.5?
View 2 Replies
View Related
Jun 9, 2009
Unhandled exception will force close the app. How to collect these exception in the app? It is better if the user has a choice send these messages back to the developer to improve the app.
View 6 Replies
View Related
Jun 7, 2010
I'm using Android 2.1 on a HTC Nexus One. I want to collect sensor data while the device is turned off.
By using android.app.Service this works well while the app is in the background but stops working when the display is turned off by the hardware button.
Is there a possibility to collect sensor data while the display is turned off?
View 3 Replies
View Related
Sep 14, 2010
I have developed android application. Now it is time to give it to the beta testers. Is there the standalone application witch will collect LogCat output? I do not want to force testers to install whole android development environment. I was thinking about application witch will collect logs through usb port and display them to the PC console (logging to the SD card is not convenient), so that tester could provide crash trace or some debugging info.
View 2 Replies
View Related
Feb 26, 2010
I'm writing an Android game that needs to receive touch events. My problem is that, whenever the user drags their finger along the screen, so many touch events get sent to the touch event handler (which I think runs as a separate thread) that my frame rate plummets! What's the best way I can limit the number of touch events that are handled per second? For example, if my game runs at 60 fps, I really shouldn't need more than 1 touch event being handled every second. Can I do this is a way that doesn't lose any information (i.e. important information about where on the screen the user touched last)?
View 2 Replies
View Related
Nov 17, 2013
I'm currently working on a new Android app, part of the app code is to collect the users id number for each new user.I search my life out to find a way to check if the user is already appear in the database.I'm looking for a simple way to check if the user is exist and if so to do something else..
View 2 Replies
View Related
Feb 8, 2014
I have an Android phone and I often watch movies with it. I'm looking for a player that can collect movie info online when I put movie files in my media library.
View 1 Replies
View Related
May 27, 2010
I have an app with about 15 threads. Most do mundane tasks and sleep most of their lives. Others collect information and cache it in hashmaps. The hashmaps grow to a moderate size and level out. The number of keys and size of value remains constant, but the contents of the values changes (at 33 keys per second average). When I start my app, I notice the garbage collection interval goes from minutes to once per second, and the amount of garbage is 700k+ each time. In fact as I was writing this, it caused my phone to reboot with an error "Referencetable Overflow". Here's my question: Are there any tricks to identifying which threads are producing the garbage, or even finding out more about what garbage they are producing?
05-26 22:08:57.052 W/dalvikvm( 1031): ReferenceTable overflow (max=512)
05-26 22:08:57.052 W/dalvikvm( 1031): Last 10 entries in JNI local reference table:
05-26 22:08:57.052 W/dalvikvm( 1031): 502: 0x449904a8 cls=Ljava/lang/String; (28 bytes)
05-26 22:08:57.052 W/dalvikvm( 1031): 503: 0x4494fda8 cls=Ljava/lang/String; (28 bytes)
05-26 22:08:57.052 W/dalvikvm( 1031): 504: 0x44a172c8 cls=Ljava/lang/String; (28 bytes)
05-26 22:08:57.052 W/dalvikvm( 1031): 505: 0x448c7900 cls=Ljava/lang/String; (28 bytes)........
View 2 Replies
View Related
Feb 11, 2010
Was looking for some guidance here. I need to replace the garbage keyboard bundled with 1.6 for something else. Which in your opinion is the best replacement and why? Maybe some comparisons would help also. Oh, by the way i'm running a mytouch 3g!
View 28 Replies
View Related
Jul 29, 2009
I didn't use much Java before Android so my knowledge concerning the gc is marginal. Now I'm developing a highly physics-based game and therefore I need to do many calculations each time step and many (25) time steps per second. At the moment I'm almost only using local objects (float) in my methods, so I guess they are allocated every time the method is called (which might be, for example, 25*100 = 2500 times a second , for 100 objects with calculations on them). This causes massive activity of the garbage collector like freeing ~10000 objects every 1-2 seconds (taking ~200ms on a real device). Now I really want to optimize that because even there's no noticeable delay due to the GC (and the frame rate is constant), this seems just not well. But I read on many documentations concerning Java optimization, that there is not much to optimize in modern versions of (desktop) Java, because the GC is fast enough. Does this apply to Android, too? Does the compiler optimize anything like frequently, steady allocated objects (like floats)? What would be best practice: keep all local objects and allocate and free them all the time or use class-global objects, even if they are only used inside one particular method (which is bad programming style but conserves GC?
View 5 Replies
View Related
May 21, 2010
Is there any way to stop the garbage collector for some time?
View 2 Replies
View Related
Jun 6, 2010
I'm writing an Augmented Reality codes that should works in realtime,
But the VM's garbage collection hinders my program's performance.
I checked my program's execution time for each in OnPrevFrame(byte[], Camera)
and it execution time increases from around 50ms to 120ms at just after each garbage collection.
I copied parts of logs below. (local time is just before and after of signal processing, and global time is time stamps for every onPreviewFrame() calling )Also I executed onPreviewFrame without any signal processing on it, but
the garbage collection is also carried showing debugging message around 60ms it spends for memory release.
Is this garbage collection come from releasing byte[] yuvs image data? ( i uses 320x240 thumb nail )
then this clearly comes from Java's limitation, so there will be no hope for improvement unless
I found a way to directly access camera device? do you think this is feasible? Hope listen to others' comments.
View 3 Replies
View Related
Nov 14, 2009
I was expecting the getEdgeFlags() method of MotionEvent to tell me when a MotionEvent had reached the edge of something, but the value returned from getEdgeFlags() is *always* zero. Is this the expected behavior? The documentation says that the flags indicate when a touch has reached the edge of the display. I've tried this on a real device and in the emulator, and the location coordinates never quite reach the edge of the display, and getEdgeFlags() always returns 0. By "never quite reach" I mean that if dragging a finger off the left edge of the display, the smallest X I got was 2. Reaching the edge of the view doesn't seem to change the value returned either.
I suppose I could set the flags myself using setEdgeFlags() using calculations with known dimensions of the object whose edges I care about. Is that how it's supposed to be used? Is this broken for now?
View 3 Replies
View Related
Sep 10, 2009
Debugging on my G1 phone, I am trying to use android.view.MotionEvent.getPressure() and MotionEvent.getSize().
For MotionEvent.getSize(), I always get 0 (the documentation says it returns a value ranging from 0 to 1;
For MotionEvent.getPressure(), it seems to me this actually reflects the real finger touch size, as opposed to "pressure"; for me, I get values range from 0 - 0.63.
Am I missing anything or is it a known bug of the SDK?
View 4 Replies
View Related
Sep 3, 2010
I have a display that is 854x480 pixels. Why is it that the MotionEvent.getX and getY methods return floats? As far as I can tell, the pixels on the display are discrete integers, there is no such thing as a half a pixel on the display.
View 1 Replies
View Related
Sep 11, 2009
I am implementing OnTouchListener and am receiving MotionEvent objects. Some ACTION_MOVE events reports absolute X/Y coordinates, while some reports relative coordinates.
How can I ask a MotionEvent what kind of coordinates it currently represents?
View 3 Replies
View Related
Dec 28, 2009
I'm drawing a rect to a surfaceview. Nothing special, just a test like this, in the surfaceview-extended class:
private int mPosX = 0; private Paint mPaint = new Paint(); Code...
the rect just bounces around the screen. I'm watching DDMS, I still see the garbage collector being called, even with this simple draw loop. There is no other application code being executed.
I'm wondering if it's realistic to expect the gc to not be called at all if we take care to not allocate any objects during our draw loops. I'm trying to extend this example to do some smooth animations, but every once in awhile the gc is called and you can see the drawing stutter. Although none of my application code is allocating any new objects, I don't know what the underlying API is doing inside surfaceview etc, and I doubt we can control that. Just wondering if this is not possible, I'd prefer to abandon this game idea up-front if we can't guarantee smooth animation.
View 5 Replies
View Related
May 25, 2009
I am developing a camera application , where the frame rate is important. However, camera uses a preview callback function which allocates a byte[] array of 230400 bytes, which makes it necessary for the garbage collection to step in. Can someone suggest me a way to avoid garbage collection stepping in?
View 10 Replies
View Related