Android-Application来传递数据

在上一篇博客中介绍到,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();

原文地址:https://www.cnblogs.com/android-deli/p/10108333.html