如果我的应用程序已通过按主页按钮最小化,我的通知服务将启动主要活动

时间:2011-08-19 08:58:18

标签: android

我的应用有通知服务。问题是当我的应用程序被最小化[通过按下主页按钮]并且通知服务触发通知我的主要活动自己开始。它真的很烦人,我需要解决它。

任何一个有可能的解决方案?

我尝试使用android:launchMode =“singleInstance”作为解决方案@ Why does starting an activity from a widget cause my main activity to start as well?,但这个解决方案的问题是,如果我尝试使用“长按主页按钮重新启动我的应用程序,这给出了最近使用的应用程序列表“我的应用程序永远不会运行。

为了重新运行它,我必须在菜单中转到我的应用程序图标并从那里打开它。

有没有办法可以解决这两个问题?

生成通知的活动:

package org.example.com;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;

public class ParentActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_copy);

    NotificationManager newNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    final Notification notificationDetails = new Notification(R.drawable.icon,"Downloads available!!",System.currentTimeMillis());
    notificationDetails.flags = Notification.FLAG_AUTO_CANCEL;

    Intent newIntent = new Intent(this,ParentActivity.class);
    newIntent.putExtra("IS_FOREGROUND",1);
    //newIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    PendingIntent newPendingIntent = PendingIntent.getActivity(this, 0, newIntent, 0);

    CharSequence contentTitle = "Downloads Available!!";
    CharSequence contentText  = "Some new Downloads are available, click to enable.";
    int notificationId = 3;

    notificationDetails.setLatestEventInfo(this, contentTitle, contentText, newPendingIntent);
    newNotificationManager.notify(notificationId, notificationDetails);

    finish();

}
}

1 个答案:

答案 0 :(得分:0)

我在你的代码中看到你正在进行一项活动,这就是为什么你的应用程序出现在我想的前台。您的服务是否开始此活动? 如果是触发通知的服务,为什么不在该服务中创建通知?然后你的申请将留在后台。