如何在使用多个任务时阻止应用程序屏幕中的多个应用程序实例?

时间:2017-08-17 11:05:53

标签: android android-activity android-manifest

activities以外有MainActivityactivitiesandroid:launchMode="singleInstance" {{}}}的Android应用程序都有var dataCacheName = 'myappData-v3n'; var cacheName = 'myapp-3n'; var filesToCache = [ '/meteosurf/', '/meteosurf/index.html', 'scripts/hammer.min.js', 'images/play_white.svg', 'images/stop_white.svg', 'images/back_white.svg', 'images/forward_white.svg', 'images/sfondo.jpg', 'images/ic_refresh_white_24px.svg', 'scripts/meteo-zoom.js', 'scripts/meteosurf_200.js', 'scripts/jquery3-2-1.min.js', 'scripts/jqueryui1-12-1.min.js', 'styles/inline_01.css', 'styles/meteosurf_200.css', 'styles/jqueryui-smoothness.css', 'styles/images/ui-bg_glass_65_ffffff_1x400.png', 'styles/images/ui-icons_454545_256x240.png', 'images/icons/icon-64x64.png', ]; self.addEventListener('install', function(e) { console.log('[ServiceWorker] Install'); e.waitUntil( caches.open(cacheName).then(function(cache) { console.log('[ServiceWorker] Caching app shell'); return cache.addAll(filesToCache); }) ); }); self.addEventListener('activate', function(e) { console.log('[ServiceWorker] Activate'); e.waitUntil( caches.keys().then(function(keyList) { return Promise.all(keyList.map(function(key) { if (key !== cacheName && key !== dataCacheName) { console.log('[ServiceWorker] Removing old cache', key); return caches.delete(key); } })); }) ); return self.clients.claim(); }); self.addEventListener('fetch', function(event) { console.log('Fetch event for ', event.request.url); event.respondWith( caches.match(event.request).then(function(response) { if (response) { console.log('Found ', event.request.url, ' in cache'); return response; } console.log('Network request for ', event.request.url); return fetch(event.request) }).catch(function(error) { // TODO 6 }) ); }); 。我导航到每个活动,然后我打开最近的屏幕,它将显示我的应用程序的 3个实例,一个用于应用程序,每个用于两个活动。

2 个答案:

答案 0 :(得分:4)

如果你真的需要创建单独的任务(我怀疑,这是一个非常罕见的情况),那么你需要做以下事情:

  • 如果您希望每个任务都显示在最近任务列表中,那么您需要一种方法让用户区分。为此,您应为每个<activity>(使用android:icon="")和/或每个<activity>的不同标签(使用android:label="")提供不同的图标。

  • 如果您只希望在最近任务列表中显示一个任务,则需要在清单中的其他<activity>标记上设置以下内容:

    android:excludeFromRecents="true"

答案 1 :(得分:0)

将此行添加到启动器活动android:launchMode="singleTop"

中的清单文件中
 <activity
   android:name=".SplashScreenActivity"
   android:launchMode="singleTop"
   android:theme="@style/AppTheme.NoActionBar">        
       <intent-filter>
            <action android:name="android.intent.action.MAIN" />       
            <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
 </activity>