如何启动Activity一次然后使用相同的实例?

时间:2018-02-07 08:54:37

标签: android

我有Activity消息列表。当新消息到达时,我想在列表中显示它。我想使用相同的Activity实例,而不是为每条新消息创建新的。

但是我的Activity没有打开(我没有看到onCreate()方法的日志消息。)

我有Activity代码:

public class MessagesListDialogActivity extends BaseActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    super.onCreate(savedInstanceState);

    Log.e("MESSAGE", "onCreate()");

    // ... create UI
    handleIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    handleIntent(intent);
}

private void handleIntent(@NonNull Intent intent) {
    // obtain the message and add to list on UI
}

}

这是我Launcher班的代码:

public static void showMessage(@NonNull Context context, @NonNull Message message) {
    final Intent intent = new Intent(context, MessagesListDialogActivity.class);
    BundleUtil.setMessage(intent, message);
    context.startActivity(intent);
}

这一行来自Manifest

<activity android:name=".features.messages.list.MessagesListDialogActivity"
        android:screenOrientation="portrait"
        android:theme="@style/DialogTheme"
        android:launchMode="singleTop"/>

我尝试使用不同的launchMode参数,例如 singleTask singleInstance ,但它不起作用。

1 个答案:

答案 0 :(得分:0)

感谢您的关注。经过多次尝试修复它后,我尝试使用这个标志:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP);

这对我有帮助。谢谢你,希望我的经验能帮助你。