開發(fā)APP使用剪切板傳遞數(shù)據(jù),把數(shù)據(jù)放在一個剪切對象(ClipObject)里,然后這個對象會被放在系統(tǒng)的剪貼板里,這樣可用于在Activity間傳遞數(shù)據(jù)。深圳APP開發(fā)公司整理出ClipObject可以有以下3種形式。
(1)Text:文字字符串文字直接放在Clip對象中,然后放在剪貼板里,粘貼這個字符串的時候直接從剪貼板拿到這個對象,然后可以在應(yīng)用中使用。
(2)URI:Uri對象表示任何形式的URI。這種形式主要用于從一個ContentProvider中復(fù)制復(fù)雜的數(shù)據(jù)。
復(fù)制的時候把一個Uri對象放在一個Clip對象中,然后再放在剪貼板里,粘貼的時候取出這個Clip對象,得到Uri,把它解析為一個數(shù)據(jù)資源,如ContentProvider,然后從資源中復(fù)制數(shù)據(jù)到應(yīng)用中。
(3)Intent:Intent對象復(fù)制的時候把Intent對象放在Clip對象中,再放入剪貼板,粘貼數(shù)據(jù)時從Clip對象中得到Intent對象,然后可以在應(yīng)用中使用。剪貼板每次僅會持有一個Clip對象,當(dāng)應(yīng)用放另一個Clip對象進來時,前一個就消失了。示例代碼如下:private void copy(){ ClipboardManager clipboard = (ClipboardManager) getSystemService( Context. CLIPBOARD_ SERVICE); ClipData clip = ClipData. newPlainText(" text"," Hello, World!"); clipboard. setPrimaryClip( clip);
} private void paste(){ ClipboardManager clipboard = (ClipboardManager) getSystemService( Context. CLIPBOARD_ SERVICE); if ((clipboard. hasPrimaryClip())) { //判斷 數(shù)據(jù) 類型 是否 是 Text 類型 if ((clipboard. getPrimaryClipDescription(). hasMimeType( MIMETYPE_ TEXT_ PLAIN))) { ClipData. Item item = clipboard. getPrimaryClip(). getItemAt( 0); CharSequence pasteData = item. getText(); } } }
開發(fā)APP關(guān)于Activity數(shù)據(jù)傳遞機制
數(shù)據(jù)傳遞機制主要有以下3種。使用Activity系統(tǒng)方法傳遞數(shù)據(jù)。使用自定義方法傳遞數(shù)據(jù)。使用廣播消息傳遞數(shù)據(jù)。使用廣播消息傳遞數(shù)據(jù)的示例代碼如下:public static void registerApiListener( Context context, BroadcastReceiver receiver, String actionId) { LocalBroadcastManager. getInstance( context). registerReceiver (receiver, new IntentFilter (actionId)); } private void sendResponseData( Response<?> response) { Intent intent = new Intent( API_ ACTION_ RAW_ RESPONSE); intent. putExtra( API_ RESPONSE_ OBJECT, response); LocalBroadcastManager. getInstance( this). sendBroadcast( intent); } @Override public void onReceive( Context context, Intent intent) { Serializable dataObject = intent. getExtras(). getSerializable( ApiService. API_ RESPONSE_ OBJECT);
Object responseObject = ((Response< Object>) dataObject). getResponseObject(); processResponseObject( context, responseObject); LocalBroadcastManager. getInstance( context). unregisterReceiver( this); }
用這種方式可以解決類似A->B->C->A這樣多級Activity/Fragment間使用startActivityForResult/onActivityResult這種機制無法傳遞數(shù)據(jù)的問題。好了,APP開發(fā)公司本文關(guān)于“開發(fā)APP關(guān)于Activity數(shù)據(jù)傳輸?shù)娜N形式與代碼分享”知識就到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。