【问题标题】:How to start an Intent from an AsyncTask如何从 AsyncTask 启动 Intent
【发布时间】:2012-03-03 09:43:53
【问题描述】:

我正在尝试通过 doInBackground() 方法在我的 AsyncTask 中启动一个 Activity,但它似乎没有启动。

我已通过使用 params[0] 调用 AsyncTask 的 Activity。

    public class StartProcess extends AsyncTask<Main, Void, Main>
{
    @Override
    protected Main doInBackground(Main... params) { 

        return params[0];
    }
    protected void onPostExecute(Main... params) {
        // TODO Auto-generated method stub
        System.out.println("post");
        Intent loc = new Intent(params[0],LocationHandler3.class);
        loc.putExtra("locationType",0);
        loc.putExtra("startEndType",0);
        params[0].startActivity(loc);
    }


}

【问题讨论】:

  • 使用 onpostexecute() 方法来做到这一点。
  • @Akki 我是否像以前一样通过 Main ?
  • AsyncTask
    而不是返回公牛你为什么不直接返回 Main
  • @Akki 我已经编辑了我上面的代码,但仍然无法正常工作,不知道你的意思。
  • 我传入 Main(这是我从中调用 AsyncTask 的 Activity)以便能够启动 Intent。

标签: android android-activity android-intent android-asynctask


【解决方案1】:

使用这个修改后的代码。

    public class StartProcess extends AsyncTask<Main, Void, Main> {  
      @Override
        protected Main doInBackground(Main... params) { 
             return params[0]; 
       }
     protected void onPostExecute(Main params) { 
    // TODO Auto-generated method stub
        System.out.println("post"); 
         Intent loc = new Intent(params,LocationHandler3.class); 
          loc.putExtra("locationType",0); 
          loc.putExtra("startEndType",0); 
          startActivity(loc);
    }
    }

【讨论】:

  • 这也解决了我的 Looper.loop() 问题。不再需要它了!
【解决方案2】:
   StartProcess objStartProcess= new StartProcess();
   objStartProcess.execute("");

使用execute("")可以调用doinBackground() method....和AsyncTask Complete in OnPostExecute方法所以尝试在...中启动Activity吧

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 2012-09-12
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    相关资源
    最近更新 更多