【问题标题】:Activity starting through Async Thread通过异步线程启动的活动
【发布时间】:2013-05-27 07:44:06
【问题描述】:

我已经创建了

异步任务

在不断从服务器获取命令的 Android Activity 中。当收到来自服务器的特定命令时,我如何启动另一个活动。 在 AsyncTask 我写了无限循环,因为它

从服务器接收“主页”消息

它应该启动主页活动。

StartActivity(new Intent(null, HOMEPAGE.class))

抛出空指针异常。我应该写什么而不是 null 作为第一个参数。

【问题讨论】:

  • StartActivity(new Intent(null, HOMEPAGE.class))。你的第一个参数应该是一个活动上下文,比如 Activityname.this

标签: android android-asynctask android-activity


【解决方案1】:

如果您的 AsyncTask 在同一个类中实现,则需要将您的活动上下文对象作为当前活动传递

startActivity(new Intent(YourActivity.this, HOMEPAGE.class)); 

【讨论】:

    【解决方案2】:

    让您的 asyncTask 持有对您当前活动活动的引用:

    class MyAsyncTask extends AsyncTask {
    
        public MyAsyncTask(Activity a) {
             this.a = a;
        }
    
        // your code
    }
    

    然后您可以使用:startActivity(new Intent(a, Homepage.class)) 启动活动,例如在 onProgressUpdate() 方法中。

    如果您想在此之后保持 AsyncTask 运行(例如,在一段时间后开始另一个活动),您必须在此之后通过回调方法或类似的方法更新您的活动变量。

    【讨论】:

      猜你喜欢
      • 2020-08-22
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      相关资源
      最近更新 更多