Android程序按home键回到后台,点击桌面图标,当前页面退出回到启动页的问题
发表于|更新于
|总字数:112|阅读时长:1分钟|浏览量:
原因
当点击桌面应用图标时,会重新启动app,启动新的堆栈,清除之前的堆栈,所以之前开启的页面都会被清除
解决方法
在启动页面的onCreate()中加入
if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0){ |
发现启动页再次启动后,立即执行Destroy方法,并使用return阻止后续的操作,便可以保留当前页面的显示状态。
文章作者: 丨小小丶
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!
相关推荐
2021-10-05
Room使用例
因实例化room消耗极大,因此调用room时应使用单例模式。 首先创建一个抽象类继承与RoomDatabase,并在其中指定model文件及数据库版本。 在java中需要加入exportSchema = false,而在kotlin中不用添加 @Database(entities = {LoginInfo.Data.class}, version = 1, exportSchema = false)public abstract class LoginInfoDatabase extends RoomDatabase { public abstract LoginInfoDao loginInfoDao();} 创建一个接口就可以在其中实现增删改查方法,在此接口前需添加@Dao以指定其为数据库的Dao @Daopublic interface LoginInfoDao { // 登录时插入保存登录数据 @Insert void insertLoginInfo(Log...
2021-03-24
Android的事件分发机制
当一个或多个手指触摸屏幕时,通常有四种类型的事件: ACTION_DOWN:按下屏幕时发生,表示触摸事件开始,他是第一个发生的事件 ACTION_UP:手指抬起,表示触摸事件结束 ACTION_MOVE:手指按下屏幕,并且手指移动的距离超过了某个阈值 ACTION_CANCLE:事件已取消(不是由于用户的行为引起) 这些信息都被包含在MotionEvent中,ACTION_DOWN和ACTION_UP只有一个,而ACTION_MOVE可能存在多个,所谓的事件分发就是队MotionEvent事件分发的过程,就是找到一个能处理MotionEvent的View,过程由Activity开始,传到ViewGroup,最终再传到View,响应过程从上到下,从子到父。 当我们点击一个按钮时,这个按钮可能被包含在ViewGroup中,事件会先从Activity中开始分发进行,如果Activity要自己处理,那么这个按钮就得不到事件信息,如果Activity是进行分发,那么接下来包裹这个按钮的ViewGroup就会得到处理,同样如果这个ViewGroup要进行拦截,那么这个按钮也得不到响应...
2021-06-25
Android Crash问题
Android在API21(Android5.0)以下,crash后会直接退出整个应用,但是在API21(Android5.0)以上系统时,会遵循以下原则重启: 包含service:如果程序crash的时候运行着service,那么系统会重新启动service。 不包含service,但是当前栈中包含两个Activity,A->B,如果B crash,那么系统会重启A。 不包含service,但是当前栈中包含三个Activity,A->B->C,如果C crash,那么系统会重启B,并且A仍然存在,即可以从重启的B back到A。
2021-07-17
实例化ViewModel的简单方法
实例化ViewModel 新建一个ViewModel为MainViewModel,旧的实例化ViewModel方法为 val mainViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactort()).get(MainViewModel::class.java) 新方法需要导入一个fragment-ktx扩展,在dependencies下添加implementation("androidx.fragment:fragment-ktx:$version")即可 在实例化ViewModel时的代码为 val myViewModel by viewModels<MainViewModel>() 创建能在后台被杀死时仍保存数据的ViewModel 在viewModel中添加savedStateHandle参数即可 class MainViewModel(private val savedStateHandler: SavedState...
2021-07-11
ImageView中src和background的区别
background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸,src是图片内容(前景),background是背景,可以同时使用 scaleType只会队src起作用,background可以设置透明度,在ImageButton中就可以使用Android:scaleType控制图片的缩放方式 控制的图片为资源而不是背景,即android:src=”@drawable/splash_bg”,而非android:background=”@drawable/splash_bg”。程序中动态加载图片也类似,如:应该imgView.setImageResource(R.drawable.);而非imgView.setBackgroundResource(R.drawable.); scaleType说明 ImageView的scaleType有matrix(默认)、center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY android:scaleType=”cen...
2021-09-30
android获取屏幕当前显示的activity完整路径
android获取屏幕当前显示的activity完整路径 cmd中输入adb shell "dumpsys window | grep mCurrentFocus"
