android活动:如何避免多次活动,因为时间延迟

时间:2013-09-22 05:56:21

标签: android android-activity

我使用远程或键盘与android。 我有一个XActivity列表,当keyPress列表项和启动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);

3 个答案:

答案 0 :(得分:1)

  1. 当您按下打开YActivity时 过程意味着您正在进行的下载应在后台完成不在UI线程中您可以使用 Asynch任务或线程
  2. 您可以禁用启动YActivity的按钮
  3.     Intent i = new Intent(this, YActivity.class);
        Bundle b = new Bundle();
        b.putSerializable("ID", id);
        i.putExtras(b);
        startActivityForResult(i, 1);
        btn.setEnabled(false);
    
    1. 你也可以设置一个Flag(比如isStartingYActivity)并检查它是否是从start开始
    2.     if(!isStartingYActivity)
          {
              Intent i = new Intent(this, YActivity.class);    
              Bundle b = new Bundle();    
              b.putSerializable("ID", id);     
              i.putExtras(b);    
              startActivityForResult(i, 1);    
              isStartingYActivity = true;     
           }
      

答案 1 :(得分:1)

在YActivity中使用AsyncTask加载数据。

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

由于

答案 2 :(得分:0)

单击按钮后移动到新活动。禁用该按钮。像这样。 yourButton.setEnabled(假);这样可以防止双击按钮。将用户带到他想要去的新活动并在新Activity中实现Async Task并显示asinctask预执行的进度对话框,以便用户知道新活动数据已加载。