【问题标题】:Problems while showing activity when app comes from background to foreground当应用程序从后台到前台时显示活动时出现问题
【发布时间】:2018-01-03 07:06:28
【问题描述】:

我创建了一个安卓应用程序。每次当用户从后台转到前台时,我都会尝试调用PinLoginActivity。我正在使用下面的方法来检测我的应用程序中所有活动的onStart 和onStop,并且它工作得很好。

class YourApplication : Application() {

  override fun onCreate() {
    super.onCreate()
    registerActivityLifecycleCallbacks(AppLifecycleTracker())
  }

}

class AppLifecycleTracker : Application.ActivityLifecycleCallbacks  {
  private var numStarted = 0

  override fun onActivityStarted(activity: Activity?) {
    if (numStarted == 0) {      
       Intent intent = new Intent(getApplicationContext(), PinLoginActivity.class);
       intent.putExtra("LockScreen", true);
       startActivity(intent);
    }
    numStarted++
  }

  override fun onActivityStopped(activity: Activity?) {
    numStarted--
    if (numStarted == 0) {        
    }
  }   
}

现在的问题是:

我正在从我的应用程序中访问图库。打开图库后,选择图像并返回我的应用程序。我收到了PinLoginActivity。在这种情况下如何避免调用PinLoginActivity?

【问题讨论】:

  • 要么不要使用startActivityForResult,因为这会将您带出您的应用程序,进入另一个“不安全”的应用程序,因此应该需要一个 pin(并实现您自己的图像选择器)。或者在您开始画廊活动之前增加您的计数器并在onActivityResult 中减少它。
  • 或者你可以在应用程序中调用一个方法,为画廊设置一个标志为真,然后检查标志是否设置为真并采取相应的行动
  • 我该怎么做? @vikaskumar
  • @Blundell 我在 Application.java 文件中有这个回调。如何在我调用画廊的 Activity 中增加计数器?
  • 有什么方法可以知道调用当前前台活动的先前活动吗? @Blundell

标签: android android-lifecycle


【解决方案1】:

此示例是您如何在应用程序中设置标志并检查图库是否即将打开

public class Application extends android.app.Application {
static boolean isGallery;
@Override
public void onCreate() {
    super.onCreate();
}

public static void setGalleryFlag(boolean isTrue){
    isGallery = isTrue;
}

public void checkGallery(){
    if (isGallery){
        //hide your activity
    }else{
        //operate normally
    }
}

}

所以当你要打开画廊时,只需将标志设置为 true

private void startGallery() {
    Application.setGalleryFlag(true);
    //open the gallery now
}

【讨论】:

  • 非常感谢您的解决方案。让我在所有情况下都尝试一下,并会更新您。还有一件事。有什么方法可以知道调用当前前台活动的先前活动吗?
  • 仅当您在 Intent 捆绑包中传递了该知识(因此任何不是您的人开始一项活动 - 捆绑包中都不会包含该知识)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2017-01-26
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多