从单独的线程开始活动?
我有一个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
:
-
在
doInBackground()
进行网络调用,doInBackground()
Bundle
或String[]
数组中的服务器响应返回给onPostExecute()
。 -
在
onPostExecute()
,将服务器数据添加到intent,然后调用startActivity()
。
尝试这个。 它会工作。 您收到错误,因为您在另一个线程上调用startActivity()
。 您需要在主(UI)线程上调用它。