当前位置: 首页 > 知识库问答 >
问题:

活动生命周期的问题

赵刚豪
2023-03-14

我在开始新活动时遇到了一些问题。在我的应用程序中,我设置了侦听意图的广播接收器(屏幕关闭)。当屏幕关闭时,我的应用程序应该开始新活动(当然在某些情况下。我没有制作垃圾邮件应用程序)。但有时不是。

我在清单中声明了活动“singleTop”,所以我也重写了“onNewIntent”方法。(我认为这很重要)但事情是这样的。

当手机进入睡眠状态并且满足某些条件时,屏幕上会出现两个图标(“我的活动”)。我使这些图标可单击,如果我单击第二个图标,我将完成(finish())当前活动,并开始新的呼叫日志活动(由Android所有)。当我这样做时,它应该会带回以前的活动(不同的布局-只有一个图标-前一个和第二个一起显示),但只有在手机进入睡眠状态时才会再次显示。问题是它没有。根据我的日志,所有条件都满足了,但只有活动没有启动。我的活动生命周期在这里发生了什么?

屏蔽接收器代码:

@Override
        public void onReceive(Context context, Intent intent) {
            Log.d("APP", "MAINSERVICE, Screen OFF");


            MissedCallObserver mco = new MissedCallObserver(MainService.this);

        if(!CallListener.isCallActive) {
            Log.d("APP", "MAINSERVICE, INSIDE IF ( call is not active )");

            if(mco.checkMissedCalls() > 0 || mco.checkUnreadSms() > 0) {
                Log.d("APP", "MAINSERVICE, calls calculated. IF entered. Next is starting activity");

            startHandleActivity();
            }
        }
    } // outer if


    } // ScreenOffReceiver




private void startHandleActivity() {


        Intent startH_Activity = new Intent(MainService.this, HandleActivity.class);
        startH_Activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startH_Activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(startH_Activity);


    }

共有1个答案

鲁光霁
2023-03-14
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
wl.acquire();

这将允许在Screen Off Intent触发后可靠地执行代码。

 类似资料:
  • 我为测试函数做了简单的应用程序,如onCreate()、onStart等。每个函数都让你有自己的日志。开始测试。 null 为什么在执行应用程序时调用onResume方法?(在a中) 为什么onPause和onStop方法一起调用?(在b中) 为什么在C中调用三个方法而不是onRestart或onrestume?(c) 为什么调用onDestroy方法?(d) 附言:对不起,英语:)

  • 我在Nexus9上遇到了一个问题。(系统版本AndroidMarshmallow)在AndroidMarshmallow之前的Android系统上,当包含fragmentA的活动状态停止时,将调用fragmentA顶部回调。当包含fragmentA的活动状态被销毁时,将调用fragmentA回调onDestroyView、onDestroy和onDetach。官方网站上描述了这些过程 最近,我发现

  • 我从和组件跟踪生命周期方法的回调,我有很多问题。我需要你帮忙理解一些要点。 情景一: Lyfecycle: > 活动:onCreate 活动:onStart 片段:onAttach 片段:onCreate 片段:onCreateView 活动:onResume 片段:OnResume。 问题: 情况二: 与情况1类似,但现在和已加载,我按Home键: 活动:onpause 片段:onpause 活

  • 本文向大家介绍Android活动生命周期介绍,包括了Android活动生命周期介绍的使用技巧和注意事项,需要的朋友参考一下 示例 假定具有MainActivity的应用程序可以通过单击按钮来调用Next Activity。 和 在首次创建应用程序 d / MainActivity:从主叫MainActivity的onCreate d / MainActivity:从主叫MainActivity调用

  • 这个页面中:检验相关、检查相关是两个选项卡,点击某一个,会默认按七天去接口拿数据,也就是说这个页面一打开,就需要调用数据叫下面的数据显示,我想要的效果是第一次打开会调数据拿数据,如果去其它页面再回到这个页面会就保留着之前的数据,不再去重新调用,除非客户做了某个操作再去调数据,这个应该用到哪个生命周期,我试了onReady好像也没行。

  • 在我的调试中,我注意到在片段上首先调用onpause/onstart/onstop/ondestroy,然后在它的活动上调用onResume,而onResume则相反--活动的onResume在它的片段之前首先调用。 为什么活动和片段之间的onpause/onstart/onstop与onResume的顺序不同?