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

时间:2020-11-10 16:31:13

标签: android sleep wake

我有一个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();



    }
...

1 个答案:

答案 0 :(得分:0)

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

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

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