【发布时间】:2021-02-22 14:59:13
【问题描述】:
我有一个 android 活动,但是当手机进入睡眠状态(意味着我将手机放在那里几秒钟然后屏幕变黑)并且我重新打开它时,活动/应用程序消失了(它仍然处于活动状态但我必须按概览按钮才能返回活动/应用程序)。如何让它自动返回?
我想要做的是当手机进入睡眠状态时,当我重新打开它时,应用程序/活动就像它进入睡眠状态时一样。我检查了 onResume、BroadcastReceivers、WakeLock、KeepScreenOn、Services,但我知道我做得不对。
OnResume 不起作用,WakeLock 不起作用,KeepScreenOn,只是保持屏幕亮着,不允许手机休眠,我没有尝试过 Services 和 BroadcastReceivers,但我想我应该先在这里问一下。
请帮忙。谢谢。
我有 MainActivity.java,它最初打开,然后启动 AdminAddMerchantActivity.java。 AdminAddMerchantActivity.java 是一个导航视图,它启动 4 个片段,包括 TimeFragment.java,它有一个选项卡布局、一个视图分页器和一个分页器适配器。 TimeFragment.java 启动了包括 PriceFragment.java 在内的 5 个片段。 下面是活动生命周期方法。
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();
}
...
【问题讨论】:
-
在问题中附上您的活动代码。
-
赛义夫,我得到了答案。谢谢。我需要进行一些调试来找出导致我的问题的原因