android – 通知打开活动,按下后退按钮,主要活动是否打开?

前端之家收集整理的这篇文章主要介绍了android – 通知打开活动,按下后退按钮,主要活动是否打开?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我能描述问题的最好方法是这样的:

>在引导时创建通知(使用BroadcastReceiver).
>我的应用程序主要活动已打开,按下主页按钮(应用程序仍在后台运行,直到系统关闭它).
>我按下状态栏并按下之前在启动时创建的通知.
>启动了一些与主要活动不同的活动.
>我按后退按钮,显示主要活动.

我该如何防止最后一步?我想要的后退按钮是回到原来的位置,这是主屏幕(包含所有小部件和应用程序图标的桌面).我的应用程序的主要活动应该是在后台运行,为什么用后退按钮调用

如果相关,我创建通知代码如下:

public void createNotification(int notifyId,int iconId,String contentTitle,String contentText) {
    Intent intent = new Intent(mContext,NewNoteActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra(AgendaNotesAdapter.KEY_ROW_ID,(long)notifyId);

    PendingIntent contentIntent = PendingIntent.getActivity(mContext,notifyId,intent,0);

    Notification notification = new Notification(iconId,contentTitle,0);
    notification.setLatestEventInfo(mContext,contentText,contentIntent);

    mNotificationManager.notify(notifyId,notification);

我试图添加几个标志组合来意图,但他们都没有解决我的问题…建议?

解决方法

正如我从你的问题中所知,你的问题是按照以下步骤进行的

1.启动完成后创建通知

2.主要活动将召唤启动

3.按下主页按钮,主要活动将停止,但不会破坏

4.您点击状态栏中的通知,这样您的应用程序将恢复,以便您已经在后台堆栈中进行了主要活动,并且通知将创建您在问题中提到的新活动NewNoteActivity活动将推回到堆栈.SO在此处步骤你在后台堆栈中有两个活动

5.你按下后退按钮,以便最后的活动将被破坏,你的主要活动将恢复但是你想要去主页屏幕.

因此,根据您的问题,您的问题是按照以下步骤进行的

1.启动完成后创建通知

2.主要活动将召唤启动

3.按下主页按钮,并且通知将创建您在问题中提到的新活动NewNoteActivity活动将推回到堆栈.SO在此处步骤你在后台堆栈中有两个活动

5.您按下后退按钮,以便最后一个活动将被破坏,您的主要活动将恢复.但是当您按下NewNoteActivity活动的后退按钮时,您想要打开主页活动.

因此,解决方案是,当您从NewNoteActivityactivity按下后退按钮时,您将使用Intent.FLAG_ACTIVITY_CLEAR_TOP标志再次启动主要活动,以便您的主活动将重新创建并接收onNewIntent()方法,以便您可以获得标记并且可以完成主要活动

例如

@Override
    public void onBackPressed() {
        Intent i = new Intent(this,Main.class);
    i.putExtra("exit",true);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
    super.onBackPressed();
    }

现在,您必须在Main活动中实现onNewIntent()方法

在从NewNoteActivity活动按下的后退按钮上,您的Main活动将调用onNewIntent()方法,因此在此方法中您必须获取从NewNoteActivity活动传递的标志变量.如果您获得标志并且如果它是真的那么只需完成主活动,以便你会得到主屏幕.

编辑

您说您已打开A,B或C中的任何活动并按下后退按钮以关闭此活动.如果此时您只有一个活动,那么您的应用程序将被关闭意味着您将获得主屏幕.但是,如果您有多个活动而按下后退按钮,您至少有一个活动在堆栈中,现在您点击通知,这样就会打开与您的通知相关联的新活动,以便此活动将是如果您按下后退按钮,如果您没有在该活动中修改onBackPressed()方法,那么如果您在后面的堆栈中有任何活动,它将会关闭堆栈这样活动就会恢复,或者如果后面的堆栈中没有任何活动,那么你的应用程序将被关闭,你将进入主屏幕

猜你在找的Android相关文章