手机从睡眠状态唤醒时加载应用/活动

问题描述

我有一个android活动,但是当手机进入睡眠状态时(这意味着我将手机放在那儿几秒钟,然后屏幕变黑),然后重新打开,活动/应用程序消失了(它仍然处于活动状态)但我必须按“概述”按钮才能返回到活动/应用)。如何使它自动恢复?

我想做的是当手机进入睡眠状态时,当我重新打开手机时,该应用程序/活动就如同进入睡眠状态一样。我已经检查了Resume,BroadcastReceivers,WakeLock,KeepScreenOn,服务,但我知道我做的不对。

OnResume不起作用,WakeLock不起作用,KeepScreenOn,仅保持屏幕打开并且不允许手机进入睡眠状态,我没有尝试过Services和BroadcastReceivers,但我想我应该先在这里问一下。

请帮助。谢谢。

我有MainActivity.java,它首先打开,然后启动AdminAddMerchantActivity.java。 AdminAddMerchantActivity.java是一个NavigationView,它启动4个片段,其中包括TimeFragment.java,该片段具有选项卡布局,视图寻呼机和寻呼机适配器。 TimeFragment.java启动5个片段,包括PriceFragment.java。 以下是下面的活动生命周期方法。

MainActivity.java:

...
@Override
    protected void onPause() {
        super.onPause();
        Log.d("state","Pausing Main");
        // Handle countdown stop here
    }

    @Override
    protected void onResume() {
        super.onResume();

            Log.d("state","Resuming Main");
        currentActivity = sharedPreferences.getString(CURRENT_ACT,"main");
        if(mAuth.getCurrentUser() != null)
        {
            if(currentActivity.equals("confirmFinalOrder"))
            {
                isResumed++;
                Intent intent = new Intent(MainActivity.this,ConfirmFinalOrderActivity.class);
                startActivity(intent);
                finish();
            }
            else if(currentActivity.equals("merchantDetails"))
            {
                isResumed++;
                Intent intent = new Intent(MainActivity.this,MerchantDetailsActivity.class);
                intent.putExtra("mid",sharedPreferences.getString("merchantid",""));
                startActivity(intent);
                finish();
            }
            else if(currentActivity.equals("navigation")) {
                isResumed++;
                Intent intent = new Intent(MainActivity.this,NavigationActivity.class);
                fragment = sharedPreferences.getString("fragment","Find Food");
                intent.putExtra("activity",fragment);
                startActivity(intent);
                finish();
            }
            else if(currentActivity.equals("adminaddnewmerchant"))
            {
                isResumed++;
                Intent intent = new Intent(MainActivity.this,AdminAddNewMerchantActivity.class);
                startActivity(intent);
                finish();
            }
            else if(currentActivity.equals("searchmerchants"))
            {
                isResumed++;
                Intent intent = new Intent(MainActivity.this,SearchMerchantsActivity.class);
                startActivity(intent);
                finish();
            }
            else if(currentActivity.equals("settingsuser"))
            {
                isResumed++;
                Intent intent = new Intent(MainActivity.this,SettingsActivity.class);
                startActivity(intent);
                finish();
            }
            else if(currentActivity.equals("settingsmerchant"))
            {
                isResumed++;
                Intent intent = new Intent(this,SettingsMerchantActivity.class);
                startActivity(intent);
                finish();
            }
            else if(currentActivity.equals("sellerregistration"))
            {
                isResumed++;
                Intent intent = new Intent(MainActivity.this,SellerRegistrationActivity.class);
                startActivity(intent);
                finish();
            }
        }
        else{
            if(currentActivity.equals("sellerregistration"))
            {
                isResumed++;
                Intent intent = new Intent(MainActivity.this,SellerRegistrationActivity.class);
                startActivity(intent);
                finish();
            }
            else if(!sharedPreferences.getString("current activity","main").equals("login user")
                    && !sharedPreferences.getString("current activity","main").equals("login merchant"))
            {
                currentActivity = "main";

                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.clear();
                editor.putString(CURRENT_ACT,currentActivity);
                editor.commit();


                Paper.book().write(Prevalent.RememberMeMerchant,"false");
                Paper.book().write(Prevalent.emailKey,"UserEmail");
                Paper.book().write(Prevalent.passwordKey,"UserPassword");
            }
        }

        // Handle countdown start here
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d("state","Stopping Main");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d("state","Destroyed Main");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.d("state","Restarted Main");

    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("state","Started Main");

    }

    @Override
    protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        Log.d("state","onRestoreInstanceState Main");
    }

    @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        Log.d("state","onSaveInstanceState Main");
    }
//if the user

    @Override
    public void onBackPressed() {
        Log.d("state","back login");

        currentActivity = "main";

        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(CURRENT_ACT,currentActivity);
        editor.commit();
    }
...

AdminAddNewMerchantActivity.java:

...
@Override
    public void onBackPressed()
    {
        if(drawer.isDrawerOpen(GravityCompat.START))
        {
            drawer.closeDrawer(GravityCompat.START);
        }
        else{
            super.onBackPressed();
        }
    }
@Override
    public void onResume() {
        super.onResume();  // Always call the superclass method first

        // Get the Camera instance as the activity achieves full user focus
        //if (mCamera == null) {
            //initializeCamera(); // Local method to handle camera init
        //}
    }
...

PriceFragment.java:

...
@Override
    public void onDestroy() {
        super.onDestroy();
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt("scrollPrice",scrollView.getScrollY());
        editor.commit();
    }

    @Override
    public void onResume() {
        Log.d("onResume","Resumed");
        super.onResume();

    }
...

TimeFragment.java:

...
@Override
    public void onResume() {
        super.onResume();



    }
...

解决方法

默认的Android行为应自动执行此操作...

您是否在onPause或onStop方法上做了一些特殊的事情?

如果不是,是否可以通过Android Studio创建一个新项目并测试该行为是否在新应用程序上仍然存在?

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...