Java 从单独的线程开始活动?

Java 从单独的线程开始活动?,java,android,Java,Android,我有一个android应用程序,它在主线程中拍摄照片并创建一个新线程,以便将此图像发送到服务器并接收响应。现在,我想将服务器发送的信息保存在手机的联系人列表中,因为我正在尝试使用以下代码在此新线程上启动活动: private void addContact() { Intent intent = new Intent(Intent.ACTION_INSERT); intent.setType(ContactsContract.Contacts.CONTENT_TYPE);

我有一个android应用程序,它在主线程中拍摄照片并创建一个新线程,以便将此图像发送到服务器并接收响应。现在,我想将服务器发送的信息保存在手机的联系人列表中,因为我正在尝试使用以下代码在此新线程上启动活动:

private void addContact() {

    Intent intent = new Intent(Intent.ACTION_INSERT);
    intent.setType(ContactsContract.Contacts.CONTENT_TYPE);

    intent.putExtra(ContactsContract.Intents.Insert.NAME, DisplayName);
    intent.putExtra(ContactsContract.Intents.Insert.PHONE, WorkNumber);
    intent.putExtra(ContactsContract.Intents.Insert.EMAIL, emailID);

    this.startActivity(intent);

}
但他给了我一个错误: onCreate()之前的活动无法使用系统服务。

我对这条消息的看法是,因为在这个新线程中它没有任何onCreate()方法,这就是它抛出这个错误的原因


有人能告诉我应该如何启动此活动。

请尝试使用
异步任务,而不是使用单独的
线程
将数据发送到服务器:

  • doInBackground()
    中进行网络调用,并将
    包中的服务器响应
    字符串[]
    数组返回到
    onPostExecute()

  • onPostExecute()
    中,将服务器数据添加到intent中,然后调用
    startActivity()


  • 试试这个。它会起作用的。由于正在另一个线程上调用
    startActivity()
    ,因此出现错误。您需要在主(UI)线程上调用它。

    两个问题:(1)最后一行中的
    这个
    关键字指的是什么?(2) 你从哪个线程调用
    addContact()方法
    ?我的错。我从某处复制了代码,但忘记删除这个关键字。但我也试过把它去掉。我也犯了同样的错误。我是从一个新线程而不是主线程调用addContact尝试使用新处理程序添加联系人。Post您是否有一些示例代码,如“我如何才能这样做?”?