onStop中的startActivity不起作用

时间:2014-09-10 06:40:18

标签: android android-activity

@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或onPause



似乎意图正确发送但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" >

2 个答案:

答案 0 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

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

答案 1 :(得分:0)

我测试了你的代码并发现当我按下后退按钮时,将调用活动B,但是当我按下主页按钮时,它没有。

我想原因是当按下主页时,系统调用启动器apk按组件或动作(我不确定),但是按下后没有。而你的活动B被发射器隐藏了。

我不认为onStop方法中的呼叫活动B是一种合适的方式,因为你无法控制调用时间。但我找到另一种方法来实现这一点:

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

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

这只是一种解决方法,而不是一个好的解决方案。

希望它有所帮助。