2016-11-19 3 views
2

Мое приложение имеет два вида деятельности, скажем MainActivity и SecondActivity. Основная деятельность объявляется как android:launchMode="singleInstance", и ее ориентация всегда portrait. У второй активности всегда есть ориентация landscape.Два действия в диспетчере задач того же приложения

В некоторых устройствах все в порядке, а в диспетчере задач есть только один экземпляр моего приложения, но на некоторых устройствах (например, Samsung S7), когда я запускаю SecondActivity, в диспетчере задач будут два экземпляра моего приложения как это изображение:

enter image description here

Я думаю, что что-то не так с launchMode в MainActivty, но мне нужно, чтобы это было singleInstance. Любое предложение?

EDIT:

MainActivity в манифесте:

<activity 
    android:name=".Activities.MainActivity" 
    android:screenOrientation="portrait" 
    android:launchMode="singleInstance" 
    android:theme="@style/AppTheme" 
    android:windowSoftInputMode="adjustPan"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

и второй:

<activity 
    android:name=".Activities.SecondActivity" 
    android:screenOrientation="landscape" /> 

запускающее код:

Intent intent = new Intent(getActivity(), 
intent.putExtra("VideoUri", filmGet.getOutput().getData().getFilmTrailer()); 
startActivity(intent); 

Если это помогает, я запускаю SecondActivity из фрагмента.

+1

попробуйте изменить режим запуска на singleTop или singleTask. – sharan

+0

как вы начинаете свою новую деятельность? Можете ли вы поделиться «manifest.xml» и «запуск?»? – mallaudin

+0

Мне нужно перезапустить MainActivity из другой активности, поэтому singleTop не то, что я хочу. Кроме того, я где-то читал, что для активности SingleTask каждый раз, когда вы запускаете приложение, активность singleTask выйдет на передний план, и я не хочу этого. –

ответ

4

Итак, прочитав комментарий @sharan и некоторые поисковые запросы, он заставил меня прочитать некоторые документы Google. Согласно документам, нет никакой разницы между android:launchMode=singleInstance и android:launchMode=singleTask, но один. Они оба делают вашу деятельность singleton, и поэтому у вас никогда не будет двух экземпляров. Единственное различие между ними состоит в том, что singleInstance не позволит задаче скрепить любое другое действие, в то время как singleTask не имеет этого ограничения. Любые другие вещи о них одинаковы.

Итак, для тех, кто читает это сообщение, я рекомендую никогда не использовать режим запуска singleInstance, если вам точно не нужно то, что у него есть. Потому что, если в вашем приложении есть только одно действие, то между и singleTask не будет различий. И если у вас более одного действия, то я порекомендую вам, чтобы все ваши действия были связаны с одной задачей.

Короче говоря, измените singleInstance на singleTask, и вы идете.

Смежные вопросы