lvhao945 / eyes-free

Automatically exported from code.google.com/p/eyes-free
0 stars 0 forks source link

Talkback keeps stuttering when certain screens continuously refresh #318

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
1. Download this app:-

https://play.google.com/store/apps/details?id=de.schildbach.oeffi&hl=en_GB

2.  Install it and open the Offi Stations app.

3.  Select your network.

4.  Wait for some bus or train stations to come up.  Now try to read any of 
them.  As you move your finger over them with Talkback, you will see how 
Talkback badly stutters and you can't read any of the entries.  This app would 
be accessible if it wasn't for this Talkback problem.

This also happens in other apps, such as downloading in the Play Store.  If the 
file is big, then the downloading window will often stutter.

This happens with both the Play Store version of Talkback and the latest Beta 2.

This seems to be an Android 4.3 problem, because on my Galaxy S3 running 4.1.2, 
this does not happen even with the beta of Talkback.  On my Galaxy Nexus 
however running 4.3, it will happen with all versions of TB I have tried, the 
ROM version, the Play Store version and the two betas 1 and 2.

I have reported this also to the developer of the app and suggests he adds to 
this issue, as I am no programmer.

Original issue reported on code.google.com by steve.nu...@gmail.com on 18 Sep 2013 at 8:48

GoogleCodeExporter commented 9 years ago
This issue is caused by constant calls to BaseAdapter.notifyDataSetChanged(). 
I'm doing this because each list item contains a small compass needle pointing 
the way to the station (bus stop etc.). Of course, the needles orientation must 
be updated on each small movement of the device.

Since the name of the station does not change, but TalkBack is needlessly 
repeating the name, I consider this a bug of TalkBack and/or the Android 
framework. Also, like Steve noted, it appears to be a regression from Android 
4.2.

Original comment by andreas....@gmail.com on 18 Sep 2013 at 9:10

GoogleCodeExporter commented 9 years ago
Note this is the exact same problem as described in issue 302 
(https://code.google.com/p/eyes-free/issues/detail?id=302).

Original comment by stephen....@gmail.com on 18 Sep 2013 at 1:26

GoogleCodeExporter commented 9 years ago
Issue 302 has been merged into this issue.

Original comment by caseybur...@google.com on 5 Dec 2013 at 7:25

GoogleCodeExporter commented 9 years ago
I believe this is a result of a recent change to AbsListView.  We're also 
seeing this in within various sections of Settings.

Original comment by caseybur...@google.com on 5 Dec 2013 at 7:29

GoogleCodeExporter commented 9 years ago
This is WAI for adapters without stable IDs. There is no way for the framework 
to infer that this is the same item, so the view is destroyed and recreated. 
The old behavior was simply to not restore focus, which was considered a bug 
and fixed.

Original comment by alanv@google.com on 5 Dec 2013 at 7:30

GoogleCodeExporter commented 9 years ago
andreas.schildbach, We recommend you use stable IDs within your adapter.  That 
should resolve the issue described here.

Original comment by caseybur...@google.com on 5 Dec 2013 at 7:41

GoogleCodeExporter commented 9 years ago
Ok indeed stable ids was not explicitly declared, although I always used stable 
ids in that adapter. I changed that for the next version.

Original comment by andreas....@gmail.com on 5 Dec 2013 at 11:07

GoogleCodeExporter commented 9 years ago
caseybur...@google.com: I'm using stable IDs since a few months, but TalkBack 
still (or again) repeats on each notifyDataSetChanged().

Original comment by andreas....@gmail.com on 28 Mar 2014 at 5:19

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
I am seeing this problem as well. 

My adapter shows 6 views which always have the same position. I have made IDs 
stable:
    @Override
    public boolean hasStableIds() { return true; }
    @Override
    public long getItemId(int position) { return position; }

Still, everytime I call
    adapter.notifyDataSetChanged()
the view with the current focus gets read aloud once again.

This is on a Nexus 5 device with Android 4.4 and updated (dec 13 2013) TalkBack 
from Google Play

Original comment by jacob.nordfalk on 24 May 2014 at 9:56

GoogleCodeExporter commented 9 years ago
Again, if this is by design, then it's a bad one and needs to change. This is a 
bug, plain and simple.

Steve

Original comment by stephen....@gmail.com on 24 May 2014 at 12:59

GoogleCodeExporter commented 9 years ago
This issue is now fixed in Android Version 4.4.4.  Unfortunately only my
Google phone and tablet have it, but my Galaxy S5 doesn't yet so the issue
persists in older versions.  Completely gone though in 4.4.4.

Thanks Google Devs.

All the best

Steve

Original comment by steve.nu...@gmail.com on 30 Jun 2014 at 3:42

GoogleCodeExporter commented 9 years ago

Original comment by alanv@google.com on 30 Jun 2014 at 6:19