当前位置: 首页 > news >正文

安卓应用软件开发合肥百度推广优化

安卓应用软件开发,合肥百度推广优化,网站做适配,做毕业网站的流程这个问题,其实不是太好复现。因为在android的缓存Fragment机制是写在androidx的库中。 主要的原因是android Framework机制: framework at yourpackage.onSaveInstanceState(XXXActivity.kt:118) at android.app.Activity.performSaveInstanceState(A…

这个问题,其实不是太好复现。因为在android的缓存Fragment机制是写在androidx的库中。

主要的原因是android Framework机制:

framework
at yourpackage.onSaveInstanceState(XXXActivity.kt:118)
at android.app.Activity.performSaveInstanceState(Activity.java:2283)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1508)
at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:5878)
at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:5281)
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:5247)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:5312)
at android.app.servertransaction.StopActivityItem.execute(StopActivityItem.java:43)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:17
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2259)

主要流程:
ActivityThread->onPause|onStop|performDestroyActivity|callActivityOnStop|handleRelaunchActivity
Instrumentation-> callActivityOnSaveInstanceState
activity->onSaveInstanceState

即,当activity发生了需要停止和隐藏的时候,或者Relaunch等等情况,根据具体的尝尽是否进行保存。因为大部分情况是不会触发的。
只要后台不做app保活的情况,手机内存回收的情况等才会触发。

app

然后onSaveInstanceState就到app代码+androidx库代码了,不同的androidx版本或者之前的android.support版本是不同的:

    override fun onSaveInstanceState(outState: Bundle) {super.onSaveInstanceState(outState)//val e = Exception()//e.printStackTrace()}

这个是你自己的activity。然后调用super。即追溯到
androidx:activity库 ComponentActivity,
androidx:savestate库 SavedStateRegistryController | SavedStateRegistry.performSave,
outBundle.putBundle(SAVED_COMPONENTS_KEY, components) //“androidx.lifecycle.BundlableSavedStateRegistry.key”

接着,就是FragmentAcitvity的FragmentManager,对于SavedStateRegistry的注册。将

 		//SAVED_STATE_TAG = "android:support:fragments";registry.registerSavedStateProvider(SAVED_STATE_TAG, () -> {return saveAllStateInternal();//里面进行缓存Fragment});

总结就是framework提供了暂存的触发条件,app的库内部支持了缓存机制。

模拟方案和调试手段

其实更重要的是:你平时无法复现,而测试或者用户出现了。
这里提供几个思路:

  1. 开发者选项,不保留活动打开。这样每次按home回到launcher,再次进,是会触发onSaveInstanceState的;
  2. 把程序按home放到后台去。如果你有蓝牙权限,可以尝试在应用管理里面,把蓝牙权限关闭,三星手机android13必定触发,因为关闭蓝牙权限,他会立刻结束对应的app。再次切回来,就会重建;
  3. 在需要调试的Fragment代码中,在构造函数里面,或者kotlin的init{}函数,添加
             val e = Exception()e.printStackTrace()
    
    可以十分方便的看到framework-androidx的代码逻辑。

修改方案如下:

   override fun onSaveInstanceState(outState: Bundle, outPersistentState: PersistableBundle) {super.onSaveInstanceState(outState, outPersistentState)removeCachedFragments(outState)}override fun onSaveInstanceState(outState: Bundle) {super.onSaveInstanceState(outState)removeCachedFragments(outState)}private fun removeCachedFragments(outState: Bundle) {if (false) { //非androidx 自行根据情况开启。outState.putParcelable("android:support:fragments", null)outState.putParcelable("android:fragments", null)} else { //androidxoutState.getBundle("androidx.lifecycle.BundlableSavedStateRegistry.key")?.let {it.remove("android:support:fragments")it.remove("android:fragments")}}}

其他:
三星手机还有一个问题,当关闭应用管理-蓝牙权限,app会立刻死掉进程。然后拉起的是你最后的activity。
如果你有一些初始化逻辑放在SplashActivity或者前置的一些地方,则会导致初始化不正常。
所以需要考虑将一些逻辑放到application的初始化中去。

http://www.dinnco.com/news/56377.html

相关文章:

  • 学历提升有几种方式网站搜索引擎优化的步骤
  • 网页制作总结报告郑州百度快照优化
  • 平面设计可以做网站?网络竞价推广托管公司
  • 单页面网站做百度推广效果优化算法
  • 百度怎么做网站360收录入口
  • 一个网站怎么做软件下载seo是什么的
  • 在网站上卖东西怎么做网站排名seo
  • wap端网站建设对网络营销的认识
  • ui设计主要是做什么百度关键词优化
  • wordpress主题jquery广州网站优化关键词排名
  • 国家林业建设工程协会网站淘宝指数官网的网址
  • 网站建设服务的风险海口网站排名提升
  • 比较有逼格的网站今日头条极速版最新
  • 中英网站开发谷歌play商店官网
  • 用六类网站做电话可以吗站长工具在线平台
  • 公司部门工作总结武汉网站seo公司
  • 真么做网站网站制作的费用
  • php做的网站如何发布搜索关键词查询
  • 做网站怎么赚钱广告seo排名优化工具
  • 桂林象鼻山附近酒店推荐举例说明seo
  • 贵州微信网站建设百度全网营销
  • web网站开发实战视频女生seo专员很难吗为什么
  • 用tp框架怎么做网站比较好的友链平台
  • 网站模板建设搜索引擎优化的例子
  • 成都山而网站建设公司指数型基金是什么意思
  • 《小城镇建设》》杂志社网站网站首页制作网站
  • 关于棋牌游戏网站建设文案广西seo经理
  • 青海学会网站建设公司重庆网站搜索排名
  • 做网站的市场风险分析及对策天津百度推广公司地址
  • 手机网站自适应屏幕网站宣传文案范例