【问题标题】:requestFocus for TextView on Jelly Bean slow果冻豆上TextView的requestFocus慢
【发布时间】:2012-10-31 14:36:00
【问题描述】:

我正在开发一个应用程序,该应用程序有 4 个用于输入数据的文本字段,但在将焦点从一个转移到另一个时遇到了性能问题。当一个字段输入了一个字符时,我使用 addTextChangedListener 来监视文本并将焦点移动到下一个文本字段。这在 4.1.1 之前的 android 版本上运行良好,但由于在 4.1.1 上进行测试,当您在焦点出现在下一个字段中之前按下一个键时会出现明显的滞后。这意味着如果用户快速键入,按键可能会丢失。

我有一个使用以下代码的简单应用程序

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    one = (EditText)findViewById(R.id.editText1);
    two = (EditText)findViewById(R.id.editText2);

    one.addTextChangedListener(new TextWatcher() {


        @Override
        public void afterTextChanged(Editable s) {
            two.requestFocus();

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub

        }
    });
}

这突出了这个问题。在基于 4.0.4 的设备上运行时一切正常,但在 4.1.1 上移动焦点需要一段时间。

我已经在 2 款不同的三星 Galaxy s3 上进行了测试,一款为 4.0.4,另一款为 4.1.1。

还有其他人看过吗?

非常感谢

保罗

【问题讨论】:

  • 我也在经历这个。这有什么更新吗?
  • Traceview 是否提供任何关于时间占用的线索?

标签: android performance android-4.2-jelly-bean


【解决方案1】:

我不知道该问题是否有解决方案...但我可能有一个“hack”,可以在问题存在时提供替代解决方案 :

  1. 将 EditText 置于屏幕之外。 (我通常用RelativeLayout将它设置在右边距的右边)。

  2. 将 onTouchListener 设置为可见的 EditText(并将 EditText 设置为不可点击)。 onTouchListener 应该将焦点放在隐藏的 EditText 上。

  3. 在隐藏的 EditText 上设置一个 addTextChangedListener,对于添加或删除的每个字符,它都会对可见的 EditText 进行适当的更改。

示例:

如果我有 4 个 ID 为 PIN 的 EditText:A、B、C 和 D,并且屏幕外还有一个 ID 为 hidden 的 EditText:

每当我收到hidden 上的第一个字符时,我都会写A。

每当我在hidden 收到第二个字符时,我都会写B。

每当我在hidden 的第二个字符上收到删除消息时,我都会在B 上删除。

...

我正在我的一个应用上做类似的事情,没有问题。

【讨论】:

  • 非常有创意的解决方案
  • 这听起来确实有点奇怪,但是有同样的想法,按照上面描述的那样做,就像一个魅力。 thx...有人在某些设备上报告过任何问题吗?
猜你喜欢
  • 2013-02-12
  • 1970-01-01
  • 2012-11-10
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多