从单独的线程开始活动?

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

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

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

  1. doInBackground()进行网络调用, doInBackground() BundleString[]数组中的服务器响应返回给onPostExecute()

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

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