編輯:改變了這篇文章的標題,因爲這個問題是由於不正確的使用字符串連接。Intent.EXTRA_TEXT緩慢更新[由於不正確的使用字符串
我敢肯定我會不必要地複雜這個,但我有問題動態更新我的intent
用於ShareActionProvider
。
該文檔說,我不需要擔心onClick,因爲ShareActionProvider
負責這一點,但是,我只想在用戶單擊ActionProvider
時構建Intent.EXTRA_TEXT
。
我不想以交互方式更新意圖的原因是因爲它需要大約2000毫秒來爲意圖構建額外信息,並且用戶可以相對更快地工作,導致UI變得呆滯。
我確定我可以坐下來弄清楚如何使用AsyncTask在後臺構建Intent,但這似乎有點矯枉過正。
我試過setOnShareTargetSelectedListener
和onPrepareSubMenu
以及其他一些回調函數,但它們似乎都是在意圖傳遞後調用的,在信息更新之前需要兩次按下Action Provider。
部分代碼;這就是所謂的打造我的意圖:
public void buildIntent(){
if (mShareIntent == null)
return;
mShareIntent.putExtra(Intent.EXTRA_SUBJECT, "Start:" + mAddressArray.get(0) + " Span:" + (mAddressArray.get(1)-mAddressArray.get(0)));
buildHTML bh = new buildHTML(mAddressArray, mBitArray);
mShareIntent.putExtra(Intent.EXTRA_TEXT, bh.getText());
//mShareIntent.putExtra(Intent.EXTRA_HTML_TEXT, bh.getHTML());
mShareActionProvider.setShareIntent(mShareIntent);
}
減緩都記錄下來的東西是bh.getText();
public class buildHTML {
private ArrayList<Integer> mAddress;
private ArrayList<String> mBits;
buildHTML(ArrayList<Integer> address, ArrayList<String> bits){
mAddress = address;
mBits = bits;
}
public String getText(){
String str;
str = "DMX : ADDRESS \n";
str += "--- : ---------\n";
int count = mAddress.size();
for (int i = 0; i < count ; i++) //takes up to 3000ms to run
str += String.format("%03d : %s\n", mAddress.get(i), mBits.get(i));
return str;
}
所有我想要做的就是運行buildIntent()
當在ShareActionProvider使用戶點擊意圖被髮送到活動。
我只是想以這種錯誤的方式?