在上一篇博客中介绍到,Android-Intent意图传递数据,能够传递基本数据类型系列,能够传递对象(需要序列化),等操作;
但是如果要传递 List<T>,这种类型的数据,就不能通过Intent来传递来,还有另外的方式来传递,就是使用Application(注意:⚠️ 不能使用大数据 例如:bitmap)
在AndroidManifest.xml文件中配置,Application android:name=".intent.MyApplication"
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:name=".intent.MyApplication">
MyApplication 定义要传递用的变量:
package liudeli.activity.intent; import android.app.Application; import java.util.List; /** * 注意:1.使用完成后要及时设置为null * 2.不能使用大数据,例如:Bitmap */ public class MyApplication<T extends Object> extends Application { public List<T> list; }
在OuterActivity 启动 OneActivity
/** * Intent意图传递数据到另外一个Activity */ public void intentToData(View view) { // 数据 List<String> list = new ArrayList<>(); list.add("李小龙"); list.add("李连杰"); list.add("陈真"); // 使用 Application 来绑定数据 MyApplication myApplication = (MyApplication) getApplication(); myApplication.list = list; startActivity(intent); }
在OneActivity接收:
TextView tvInfo = findViewById(R.id.tv_info); // 得到Application绑定好的数据 MyApplication myApplication = (MyApplication) getApplication(); tvInfo.setText("" + myApplication.list.toString()); // 清空MyApplication的list myApplication.list = null; System.gc();