0

我在安卓上使用遥控器或键盘。我在 XActivity 中有一个列表,当 keyPress listitem 并启动 YActivity 时,在 YActivity 之前需要下载一些数据,所以,当 keyPress 时,存在时间延迟,大约几秒钟后,然后弹出一个 YActivity。

但是在那几秒钟的时间延迟,人们可以移动焦点并再次按下,另一个 YActivity 再次弹出。

如何避免这种情况。

    Intent i = new Intent(this, YActivity.class);
    Bundle b = new Bundle();
    b.putSerializable("ID", id); 
    i.putExtras(b);
    startActivityForResult(i, 1);
4

3 回答 3

1
  1. 当您按下打开 YActivity 时,该过程意味着您正在执行的下载应在后台完成,而不是在 UI 线程中您可以使用异步任务或线程
  2. 您可以禁用启动 YActivity 的按钮
    Intent i = new Intent(this, YActivity.class);
    捆绑 b = 新捆绑();
    b.putSerializable("ID", id);
    i.putExtras(b);
    startActivityForResult(i, 1);
    btn.setEnabled(false);
  1. 您还可以设置一个标志(如 isStartingYActivity)并检查它是否开始启动
    如果(!isStartingYActivity)
    {
        Intent i = new Intent(this, YActivity.class);    
        捆绑 b = 新捆绑();    
        b.putSerializable("ID", id);     
        i.putExtras(b);    
        startActivityForResult(i, 1);    
        isStartingYActivity = true;     
     }
于 2013-09-22T05:58:17.773 回答
1

在 YActivity 中使用 AsyncTask 来加载数据。

“AsyncTask 可以正确和轻松地使用 UI 线程。此类允许执行后台操作”

谢谢

于 2013-09-22T05:59:46.560 回答
0

只要单击按钮即可移动到新活动。使按钮禁用。像这样。yourButton.setEnabled(False); 这将防止双击按钮。将用户带到他想要去的新活动并在新活动中实现异步任务,并显示异步任务预执行的进度对话框,以便用户知道新活动数据正在加载。

于 2013-09-22T07:23:08.140 回答