码迷,mamicode.com
首页 > 移动开发 > 详细

安卓点击home键重启

时间:2018-12-01 20:22:39      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:方法   roo   而不是   this   home   nbsp   程序   导致   ati   

主要原因是:每次启动Intent导致新创建Task的时候,该Task会记录导致其创建的Intent;而如果后续需要有一个新的与创建Intent完全一致(完全一致定位为:启动类,action、category等等全部一样,不可多项也不可缺少),那么该Intent并不会触发Activity的新建启动,而只会将已经存在的对应Task移到前台;这也就是为什么桌面会在再次点击图标时将后台任务挪到前台而不是重新启动App的实现。

1.在启动页的Activity中的 onCreate()方法做处理

 1 protected void onCreate(Bundle savedInstanceState) {  
 2     super.onCreate(savedInstanceState);  
 3     // 避免从桌面启动程序后,会重新实例化入口类的activity
 4     if (!this.isTaskRoot()) { // 判断当前activity是不是所在任务栈的根
 5         Intent intent = getIntent();
 6         if (intent != null) {
 7             String action = intent.getAction();
 8             if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && Intent.ACTION_MAIN.equals(action)) {
 9                 finish();
10                 return;
11             }
12         }
13     }
14 } 

 

 2.如果启动页为SplashActivity,之后finish掉启动MainActivity,解决办法:将MainActivity的launchMode设置为“singleTask”

 1 <activity
 2     android:name=".activity.StartActivity"
 3     android:screenOrientation="portrait">
 4     <intent-filter>
 5         <action android:name="android.intent.action.MAIN" />
 6         <category android:name="android.intent.category.LAUNCHER" />
 7     </intent-filter>
 8 </activity>
 9 <activity
10     android:name=".activity.MainActivity"
11     android:launchMode="singleTask"
12     android:screenOrientation="portrait" />

 

安卓点击home键重启

标签:方法   roo   而不是   this   home   nbsp   程序   导致   ati   

原文地址:https://www.cnblogs.com/jian-dan-ai-boke/p/10050401.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!