从单独的线程开始活动?

时间:2014-11-23 04:09:31

标签: java android

我有一个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()方法,这就是它抛出此错误的原因。

有人可以告诉我应该如何开始这项活动。

1 个答案:

答案 0 :(得分:1)

不要使用单独的Thread将数据发送到服务器,请尝试使用AsyncTask

  1. doInBackground()进行网络通话,并将BundleString[]阵列中的服务器响应返回至onPostExecute()

  2. onPostExecute()中,将服务器数据添加到意图中,然后调用startActivity()

  3. 试试这个。它会工作。您收到错误是因为您在另一个线程上调用了startActivity()。您需要在主(UI)线程上调用它。