2012-11-30 55 views
1

如何在活動之間快速傳遞大的json字符串?在Android中的活動之間傳遞數據(BIG JSON數據字符串)

a)我的活動一看起來像這樣。

JsonDataTask jdt = new JsonDataTask(c); 

AsyncTask<String, Integer, String> rdataJSON = jdt.execute("https://job.jobnet.dk/FindJobService/V1/Gateway.ashx/annonce?fritekst=akutjob&sortering=match"); 

try { 
    Intent i = new Intent(c, JoblistActivity.class); 
    i.putExtra("rdataJSON", rdataJSON.get()); 
    startActivity(i); 
} catch (InterruptedException e1) { 
    e1.printStackTrace(); 
} catch (ExecutionException e1) { 
    e1.printStackTrace(); 
} 

b)接着下面活動二。

Intent intent = getIntent(); 
JobPosting_json = intent.getStringExtra("rdataJSON"); 

問題出在哪裏了 'jdt.execute()' 又名JSON字符串 返回也必須數據.. 那麼 'getStringExtra( 「rdataJSON」)' 不容holde的hule字符串。 。

回答

0

所以兩個解決方案:

  • 或您緩存在你的第一個活動的數據,然後把它在第二
  • 或者你在第二個活動

我經常去的第二個選項的要求去做,但是這一切都取決於你的需求。

+0

嗯,如果我使用2選項,那麼'AsyncTask'類中的'ProgressDialog'在開始活動之前不會顯示。 – Voidcode

+0

http://paste.ubuntu.com/1399401/ – Voidcode

+0

好吧,你可以開始一個活動,它的進度對話框啓動一個asynctask –

1

你想用Parcelable類一個活動到另一個活動,請參閱http://developer.android.com/reference/android/os/Parcelable.html

+0

好酷..我會研究它:-) – Voidcode

+0

這對大數據並不好。 Parcelable允許傳遞不超過1MB的數據,但在一些平臺上不超過512kb。它並不是很多。如果您嘗試傳遞的可能性更大,則您的應用程序將因TransactionTooLarge異常而崩潰。 – comm1x

相關問題