`

APK安装成功后点击"打开"再按Home键应用会重启的问题

阅读更多
   安装系统SD卡里面的apk或者原有的程序更新版本的时候,会遇到升级安装成功之后的一个选择——“打开”和“完成”,点击完成没有问题,但是,如果点击了"打开",然后按Home键,从应用程序列表里面选择应用程序图标进入,这个时候就会重新启动了一个应用程序,退出之后就正常了。

1.问题

安装apk程序成功后会有两个按钮,打开、完成。打开可以打开安装的程序,此时操作程序。然后按home键再从桌面点击图标打开程序会发现程序从入口重新打开,并不是刚才的运行状态。

2.解决办法
我们在程序入口的activity中检测该activity是不是程序的root Activity。如果不是就可以直接finish此activity,程序会从栈中还原以前的状态。


具体代码如下:
在应用启动的activity的Oncreate方法中添加如下代码即可:


if (!isTaskRoot()) {
			//bug at:http://blog.csdn.net/aa464971/article/details/62044798
			// Android launched another instance of the root activity into an existing task 
			//  so just quietly finish and go away, dropping the user back into the activity 
			//  at the top of the stack (ie: the last state of this task) 
			finish(); 
			return; 
		} 


或者更加安全的做法:
if(!isTaskRoot()) { //判断该Activity是不是任务空间的源Activity,“非”也就是说是被系统重新实例化出来 	
			//如果你就放在launcher Activity中话,这里可以直接return了                        
			//bug at:http://blog.csdn.net/love100628/article/details/43238135
			Intent mainIntent=getIntent();  			
			String action=mainIntent.getAction(); 			
			if(mainIntent.hasCategory(Intent.CATEGORY_LAUNCHER) && action.equals(Intent.ACTION_MAIN)) {
				finish(); 				
				return;//finish()之后该活动会继续执行后面的代码,你可以logCat验证,加return避免可能的exception 
			}
		}


可以将上面的代码加在setContentView(R.layout.xxx);之前;
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics