2014-09-10 20 views
0
@Override 
public void onStop() { 
      Intent intent = new Intent(this, StatusActivity.class); 
      startActivity(intent.setAction(AppConstants.ACTION_DISPLAY).addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK)); 


    super.onStop(); 
} 

Это не работает почему?
StatusActivity не получает намерения в OnCreate или onNewIntent
если я ставлю код где-нибудь еще, то он работает, но не в OnStop или OnPausestartActivity in onStop не работает



кажется, что намерение передается правильно, но StatusActivity является не получая его сразу. Он получает его только в том случае, если я посылаю другое намерение из другого места, а затем получаю их одновременно.
Для тестирования я отправил 10 намерений в начале, а затем после нескольких секунд я отправил другое намерение из службы, и StatusActivity получил 11 намерений сразу.

<activity 
    android:name=".MainActivity" 
    android:excludeFromRecents="false" 
    android:label="@string/app_name" 
    android:launchMode="singleTask" 
    android:taskAffinity=".MainActivity" 
    android:windowSoftInputMode="stateHidden|adjustResize" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name=".StatusActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:excludeFromRecents="true" 
    android:label="@string/app_name" 
    android:launchMode="singleInstance" 
    android:taskAffinity=".StatusActivity" > 
+0

Прежде всего вы не можете быть уверены, что каждый раз, когда onStop() будет называться becz, проблема с памятью устройства onStop() не будет вызываться, а onPaush() будет окончательно вызвана. –

+0

Что вы хотите добиться? –

+0

Я хочу, чтобы после того, как активность A была закрыта (после onStop), показана активность B. Мне все равно, если он не работает все время – Chris

ответ

0

Попробуйте этот путь, надеюсь, это поможет вам решить вашу проблему.

Intent intent = new Intent(this, StatusActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
+0

, что не работает – Chris

0

меня проверить свой код и узнать, что, когда я нажимаю кнопку назад, активность B будет называться, но когда я нажимаю кнопку домой, она не делает.

Я думаю, причина в том, что при нажатии дома системный вызов launcher apk по компоненту или действию (я не уверен), но обратно не нажал. И ваша деятельность B скрыта пусковой установкой.

Я не думаю, что деятельность вызова B в методе onStop является подходящим способом, потому что вы не можете контролировать время вызова. Но я нахожу еще один способ добиться этого:

protected void onStop() { 
    finish(); 
    super.onStop(); 
} 

public void finish() { 
    startActivity(your intent); 
    super.finish(); 
} 

Это всего лишь обходной путь, а не хорошее решение.

Надеюсь, это поможет.

+0

. Моя проблема в том, что когда я нажимаю кнопку «Назад», активность B не вызывается и не желает. Я не хочу, чтобы активность B вызывалась при нажатии на дом (что также противоречит политике Google) – Chris

+0

@ Крис, попробуйте начать работу в 'onBackPressed' или' onUserLeaveHint', может ли он работать? – Euporie

+0

in onBackPressed это работает, onStop it не. проблема в том, что мне нужно начать работу после прекращения текущей активности. В конце концов я отправил трансляцию на службу, где он работает, и оттуда я использовал startActivity. Это так удивительно, что он не работает на onStop. Я думал, возможно, это из-за задачиAffinity – Chris

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