Android 在共享通知时避免当前活动完成

Android 在共享通知时避免当前活动完成,android,Android,我想在当前的活动中启动一个通知,即聊天活动。当我按下通知时,我想输入chatoneivity 但是,我不希望当前的ChatOneActivity在ChatOneActivity中完成。因为我正在接收数据,当我按下后退按钮时,我想留在聊天活动中 关键是我不想让chattactivity完成,不管我当前在哪个活动中 那我该怎么办 这是密码 private void showNotification(String id, String message) { NotificationCompat

我想在当前的
活动
中启动一个通知,即
聊天活动
。当我按下通知时,我想输入
chatoneivity

但是,我不希望当前的
ChatOneActivity
ChatOneActivity
中完成。因为我正在接收数据,当我按下后退按钮时,我想留在
聊天活动中

关键是我不想让
chattactivity
完成,不管我当前在哪个
活动中

那我该怎么办

这是密码

private void showNotification(String id, String message) {
    NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext())
    .setSmallIcon(android.R.drawable.sym_action_email)
    .setContentTitle("You have a new message")
    .setContentText(message);
    Intent intent = new Intent(ChatActivity.this,ChatOneActivity.class);
    intent.putExtra("toId", id);
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(ChatActivity.this);
    stackBuilder.addParentStack(ChatOneActivity.class);
    stackBuilder.addNextIntent(intent);
    PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_CANCEL_CURRENT);
    builder.setContentIntent(pendingIntent);
    NotificationManager mNotificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(1, builder.build());
}
问题是:

现在我进入
ChatOneActivity
,当我按下后退按钮时,我返回到桌面。意味着
chattactivity
已经完成,我不想这样做

这是最主要的

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.webmobilegroupchat"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="16" />

<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.webmobilegroupchat.MainActivity"
        android:label="@string/app_name" >
    </activity>
    <activity
        android:name="com.example.webmobilegroupchat.ChatActivity"
        android:label="@string/title_activity_chat" >
    </activity>
    <activity
        android:name="com.example.webmobilegroupchat.ChatOneActivity"
        android:label="@string/title_activity_chat_one" >
    </activity>
    <activity
        android:name="com.example.webmobilegroupchat.SplashActivity"
        android:label="@string/title_activity_splash" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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


在ChatOneActivity上尝试此功能

  @Override
  public void onBackPressed() {
    super.onBackPressed();
    Intent intent = new Intent(getApplicationContext(),ChatActivity.Class);
    startActivity(intent);
}

创建通知时,您的代码看起来不错,但您还必须在清单中定义父活动,才能返回到stackBuilder。addParentStack假定您也在清单中为API 16+定义父活动:

<activity android:name=".ChatOneActivity"
    android:parentActivityName=".ChatActivity"
    ... />

对于
<activity android:name=".ChatOneActivity">
<meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value=".ChatActivity" />


考虑对这些类型的长时间运行的任务使用
服务
。我认为TaskStackBuilder有问题。请显示这些
活动的清单声明
我已经添加了清单现在当我按下后退按钮时,它将返回到ChatActivity。但是ChatActivity已经完成。我有什么可以避免的吗?(如果不使用服务)我不太明白,您想导航回ChatActivity,正如您在问题中提到的那样?我的意思是您的代码看起来不错。但是当我按下通知时,onDestory被调用。我不知道为什么。这意味着聊天活动被系统杀死。当你旋转屏幕时,它会调用onDestory和onCreate。这些方法由系统调用。我没有调用finish方法是的,当改变方向时,你可以通过将方向锁定在一种模式(纵向/横向)来确认它&记住接受这个问题,如果它对你有帮助的话