2016-08-30 18 views
1

我想开始通知Activity,即ChatActivity。当我按通知时,我想输入ChatOneActivity在收到通知时避免当前活动完成

但是,我不想当前ChatActivity完成,当我在ChatOneActivity。因为我正在接收数据,当我按下后退按钮时,我想留在ChatActivity

关键是我不希望ChatActivity完成,无论哪个Activity我在我目前。

那么,应该怎么办?

下面是代码

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,当我按下返回按钮,我返回到桌面。意思是ChatActivity已经完成了我不想要的。

这里是mainfest

<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> 

+0

考虑使用'Service'对于这些类型的长时间运行的任务。 – Shaishav

+0

我认为TaskStackBuilder存在问题。 –

+0

您能否为这些“活动”显示清单声明? –

回答

1

请尝试对ChatOneActivity活动。

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

你的代码看起来很好创建通知,但你必须定义在清单父活动也向后导航,stackBuilder.addParentStack假设您在清单定义它,以及对API 16+:

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

为< API 16:

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

+0

现在,当我按下后退按钮时,它将返回到ChatActivity中。然而,ChatActivity已经完成了。是否有任何为什么我可以避免这种情况?(如果不使用服务) –

+0

不完全明白,你想回到ChatActivity,正如你在上面提到的问题? – Farhan

+0

我的意思是你的代码看起来很好。但是当我按通知时,onDestory被调用。而我不知道为什么。这意味着ChatActivity被系统杀死了 –