首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 中意料之外的应用崩溃以及它们的解决方案

不管应用程序的业务逻辑如何,都可能会因为运行的系统或平台问题而导致出现某些奇怪的崩溃现象。...当应用程序进程被终止的时候,所有的单例对象和临时数据都同时丢失了,而现在如果你返回你的应用程序,系统会创建一个新的进程,而你的应用程序会从你退出时候的 Activity 栈顶执行 Resume 函数恢复该...解决方案 2: 现在,你肯定已经注意到可以利用“包”对象保存和访问数据。与前面的示例中的操作类似,将每个 Activity / Fragment 中所有必要的信息保存下来。...(outState: Bundle) { super.onSaveInstanceState(outState) outState.putParcelableArrayList...我们会让应用程序检查 onViewCreated() 函数中捆绑包中的数据是否可用,如果不可用,则会通过访问 ViewModel 的方法获取数据。

1.2K10

【Android 插件化】“ 插桩式 “ 插件化框架 ( 代理 Activity 组件开发 )

, 并使用 AssetManager 加载插件包资源的模块 ; 本博客中开发开发本地的 Activity 桩 , 即空壳 Activity , 用于持有插件界面组件 , 并在生命周期中回调插件界面 Activity...插件包 apk 中的 ProxyActivity , 则不能使用应用本身的类加载器 , 插件管理器 PluginManager 中的类加载器已经加载了插件包 apk 中的 dex 文件 , 因此可以获取到...null, context.getClassLoader() // DexClassLoader 加载器的父类加载器 ); 在支持 插件化的工程中 , " 宿主 " 模块 和...Activity 类对象 ; // 使用类加载器加载插件中的界面组件 ClassoutState) { super.onSaveInstanceState(outState); pluginActivity.onSaveInstanceState

70120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 应用保存状态

    最先找到的文档就是通过 Activity 的 onSaveInstanceState 和 onRestoreInstanceState 方法来保存用户状态, 虽然最终测试发现这种方法不是肯靠谱, 还是记录下来了...实例参数, 通过重写这个方法, 可以保存 Activity 的状态, 示例代码如下: protected override void OnSaveInstanceState(Bundle outState...) { base.OnSaveInstanceState(outState); outState.PutInt("main_activity_click_count", _count);...} 经过测试, 这种方法最大的缺点就是不靠谱 , 因为 onSaveInstanceState 和 onResotreInstanceState 不是每次都能被系统调用, 因为应用可能在调用 onRestoreInstanceState...2、 使用 SharedPreference 保存状态 Android 推荐在 onPause 方法中使用 SharedPreference 保存状态是比较可靠的, 因为 SharedPreference

    92720

    Android-Jetpack笔记-ViewModelSavedState

    上篇文章提到,虽然viewModel要比onSaveInstanceState简单,但是viewModel只能在屏幕旋转和语言切换后(即配置变更时)的页面重建维持数据,当页面意外销毁时数据无法恢复(viewModel...也会重建),而这点onSaveInstanceState可以做到。...(Bundle outState) { super.onSaveInstanceState(outState); //在页面被意外销毁时,存储act的创建时间...outState.putString("test", mTime); } } 在onCreate方法中,新加了savedInstanceState的取值操作,同时重写了onSaveInstanceState...方法存储时间,那么如何模拟页面被意外销毁呢,可以在开发者选项中选中不保留活动-用户离开后即销毁每个活动,开启后,运行app,然后按home键引起页面意外销毁,然后回到页面,查看日志: ?

    70420

    Android-活动的生命周期(二)

    修改主活动的布局和代码,加入两个按钮,分别用于启动NormalActivity和DialogActivity。 然后重写Activity的7个回调方法,分别打印相应的语句。...onSaveInstanceState()携带了一个Bundle类型参数,提供了一系列的方法保存数据,比如可以使用putString()方法保存字符串,使用putInt()方法保存整型数据,每个保存方法需要传入两个参数...(Bundle outState){ super.onSaveInstanceState(outState); String tempData = "Something you just...typed"; outState.putString("data_key",tempData); } 数据保存了,一直使用的onCreate()方法也有个Bundle类型参数,这个参数一般情况下都是...的onCreate()方法, @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState

    37720

    字节Android工程师都在学习的Activity与Activity调用栈,你都学习了?

    首先,Activity就会被销毁,onPause(), onStop(),onDestory()均会被调用,同时由于Activity是在异常状态下终止的,系统会在onStop()之前,调用onSaveInstanceState...} } @Override protected void onSaveInstanceState(Bundle outState){ super.onSaveInstanceState(outState...("extre_test"); Log.d(TAG, test); } 执行顺序: 1 onPause() 2 onSaveInstanceState(Bundle outState) 3 onStop...Activity优先级如下: 1 前台Activity 2 可见但非前台Activity 3 后台Activity 当系统资源不足的时候,会按照这个优先级使用onSaveInstanceState()和...只有一个Intent同时匹配这三个类别才能启动目标Activity。 action的匹配要求,Intent中的action存在且必须和过滤规则中的其中一个action相同。

    43830

    Fragment 重叠 遮盖问题 完美解决

    原本以为只有在系统因为内存回收Activity时才会调用的onSaveInstanceState(),居然在转跳到其他Activity、打开多任务窗口、使用Home回到主屏幕这些操作中也被调用,然而onRestoreInstanceState...接着通过调查资料发现Activity中的onSaveInstanceState()里面有一句super.onRestoreInstanceState(savedInstanceState),Google...其实到这里大家也就明白了,就是因为这句话导致了重影的出现,于是我删除了这句话,然后onCreate()与onRestoreInstanceState()中同时使用问题一中的创建Fragment方法,然后再通过保存切换的状态...super.onRestoreInstanceState(savedInstanceState); } @Override protected void onSaveInstanceState...(Bundle outState) { //记录当前的position outState.putInt("position", position); }

    1.3K20

    Android-Fragment

    我们在创建Fragment的管理器的时候,会选择导入那个包下的FragmentManager.有app包下和v4包下的,这里我推荐用v4包的FragmentManager。...但如果我们的Activity被回收,那么就会出现我点击的是A下标,结果出来的是BFragment,还会出现重叠等问题,那么如何解决呢?...So,在刚才避免Fragment重复创建的基础上,我们要记录上一次和当前点击的Fragment下标,并在onSaveInstanceState()方法中保存。...保存上一次和当前Fragement下标 其实解决Fragment还有一个简单方法,那就是注释掉onSaveInstance()中的super.onSaveInstance(outState),不推荐使用...onSaveInstanceState(Bundle outState)会在以下情况被调用: 当用户按下HOME键时。 从最近应用中选择运行其他的程序时。 按下电源按键(关闭屏幕显示)时。

    1.2K30

    Android Activity 活动的生命周期

    这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的栈顶,并且处于运行状态。 onPause()。这个方法在系统准备去启动或者恢复另一个活动的时候调用。...我们通常会在这个方法中将一些消耗CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动的使用。 onStop()。...@Override protected void onSaveInstanceState(@NonNull Bundle outState) { super.onSaveInstanceState...(outState); outState.putString("key", "value"); } 使用的onCreate()方法其实也有一个Bundle 类型的参数。...@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

    77420

    Activity生命周期

    我们来回顾一下关于Activity的知识点,这个是面试中最常问的问题之一,Activity也是Android中四大组件,最重要的一个组件,我们在实际开发中,需要我们开发者理解它的生命周期还有对启动模式特殊场景的使用...引入两个方法 onSaveInstanceState onRestoreInstanceState 一般情况下,这两个方法不会被执行,那什么时候会执行?...三种优先级: 前台Activity,优先级最高 可见但非前台Activity 后台Activity,优先级最低 上面两种情形导致Activity被销毁,这时我们可以通过上面说的两个方法进行数据的保存和恢复...protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState...); Log.d(TAG, "onSaveInstanceState"); outState.putString("extra_test", "test"); }

    52930
    领券