application Manifest

Application

Android的一大组件,在App运行过程中有且仅有一个Application对象贯穿应用的整个生命周期。打开AndroidManifest.xml,发现activity节点的上级正是application节点,不过该节点并未指定name属性,此时App采用默认的Application实例。

Manifest中application属性requestLegacyExternalStorage

当应用程序在 Android 10(API级别29)及更高版本上运行时,默认情况下,它无法访问外部存储中的文件。这是由于Android 10引入了一种新的存储权限模型,称为Scoped Storage(作用域存储)。Scoped Storage对应用程序的文件访问进行了更严格的限制,以提高用户数据的安全性和隐私性。

然而,如果你的应用程序以较早的Android版本为目标,并希望继续在Android 10及更高版本上访问外部存储中的文件,你可以在AndroidManifest.xml文件中的标签中添加以下属性:

<application
    ...
    android:requestLegacyExternalStorage="true">
    ...
</application>

这个属性告诉系统,你的应用程序仍然使用旧的外部存储权限模型,而不是Scoped Storage。这样,你的应用程序将能够在Android 10及更高版本上继续访问外部存储中的文件。

请注意,这只是一个临时解决方案。在将来的Android版本中,Scoped Storage将成为唯一的存储权限模型,而 android:requestLegacyExternalStorage 属性将不再起作用。因此,建议在可能的情况下,迁移到Scoped Storage模型。

问题

android9系统默认禁止http协议,即禁止明文传输,必须使用https来通讯。而工程中,可能还有一些地方使用http,怎么让android9也能使用http呢?
答案:
在AndroidManifest.xml的application节点中添加如下一条属性:

android:usesCleartextTraffic="true"

是否允许备份应用的数据,默认是true,当备份数据的时候,它的数据会被备份下来。如果设为false,那么绝对不会备份应用的数据,即使是备份整个系统。

<application android:allowBackup="false">

声明你的application是否愿意支持从右到左(原来RTL就是right-to-left 的缩写…)的布局

android:supportsRtl="true"

注意,如果你使用的android sdk版本不是23或以上的(即android6以上),配置这条usesCleartextTraffic会导致编译失败,提示这个属性未定义

配置文件相比与java文件的好处,配置文件在执行时并没有进行编译。而java文件需要编译成为.class文件才可以运行。

元数据 meta_data :这个数据在AndroidManifest中,我们在引用第三方的SDK时,对方可能会将一些数据放在其中。比如说token。

Application生命周期

  • onConfigurationChanged( ) :在配置被改变时触发 。
  • onCreate() :在程序创建时创建。
  • onLowMemory() :内存不够时触发。
  • onTerminate() :当终止程序时调用 但是不能保证一定调用
  • onTrimMemory() :在内存清理时触发
public class MyApplication extends Application {
    private static String TAG = "JJWorld.MyApplication";
    @Override
    public void onCreate() {
        super.onCreate();
        Log.i(TAG,"MyApplication onCreate");
        Log.i(TAG,"process myUid:" + Process.myUid() + "  myPid:"+Process.myPid());
    }

    @Override
    public void onConfigurationChanged(@NonNull Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i(TAG,"MyApplication onConfigurationChanged");
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        Log.i(TAG,"MyApplication onTerminate");
    }

    @Override
    public void onLowMemory() {
        super.onLowMemory();
        Log.i(TAG,"MyApplication onLowMemory");
    }

    @Override
    public void onTrimMemory(int level) {
        super.onTrimMemory(level);
        Log.i(TAG,"MyApplication onTrimMemory");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学知识拯救世界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值