如何解决手机从睡眠状态唤醒时加载应用/活动
我有一个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创建一个新项目并测试该行为是否在新应用程序上仍然存在?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。