当应用程序移至背景时,如何更改活动,然后在恢复时再次更改活动?
我的目标是使我的密码管理器应用程序的当前可见活动(例如Magenuactivity)在暂停应用程序时更改为空屏幕(因此,当应用程序在后台时,没有人可以看到密码),然后在恢复应用程序以供用户log时运行loginScreenactivity。返回。我使用 vokilam by vokilam来实现lifecycleobserver,而且我效果很好,但是我没有,但是我没有效果将意图传递给ApplifecyClelistener类的选项。我该如何克服这个问题?先感谢您。
applifecyclelistener.kt
import android.app.Application
import android.util.Log
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner
class App : Application() {
override fun onCreate() {
super.onCreate()
ProcessLifecycleOwner.get().lifecycle.addObserver(AppLifecycleListener())
}
}
class AppLifecycleListener : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
Log.i(null, "Resume")
}
override fun onStop(owner: LifecycleOwner) {
Log.i(null, "Stop")
}
}
mainmenuactivity.kt
class MainMenuActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_menu)
supportActionBar?.hide()
val goToPassGeneratorScreenButton = findViewById<Button>(R.id.goToPassGeneratorScreenButton)
val goToPassCheckScreenButton = findViewById<Button>(R.id.goToPassCheckScreenButton)
val addServicePasswordButton = findViewById<Button>(R.id.addServicePasswordButton)
val updateServicePasswordButton = findViewById<Button>(R.id.updateServicePasswordButton)
val updateMasterkKeyButton = findViewById<Button>(R.id.updateMasterKeyButton)
goToPassGeneratorScreenButton.setOnClickListener {
val intent = Intent(this, PassGeneratorActivity::class.java)
startActivity(intent)
}
goToPassCheckScreenButton.setOnClickListener {
val intent = Intent(this, PassViewerActivity::class.java)
startActivity(intent)
}
addServicePasswordButton.setOnClickListener {
val intent = Intent(this, PassCreatorActivity::class.java)
startActivity(intent)
}
updateServicePasswordButton.setOnClickListener {
val intent = Intent(this, PassEditorActivity::class.java)
startActivity(intent)
}
updateMasterkKeyButton.setOnClickListener {
val intent = Intent(this, MasterKeyEditorActivity::class.java)
startActivity(intent)
}
}
override fun onBackPressed() {
moveTaskToBack(true)
}
androidManifest.xml的片段
...
<application
android:name=".App"
...
</application>
my goal is to make my Password Manager app's current visible activity (e.g. MainMenuActivity) change to EmptyScreenActivity when app is paused (so nobody can see the passwords when the app is in background) and then run LoginScreenActivity when the app is resumed for user to log back in. I used this code by vokilam to implement LifecycleObserver and it works pretty well but I'm stuck because there is no option to pass the Intent to the AppLifecycleListener class. How can I overcome this issue? Thank you in advance.
AppLifecycleListener.kt
import android.app.Application
import android.util.Log
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ProcessLifecycleOwner
class App : Application() {
override fun onCreate() {
super.onCreate()
ProcessLifecycleOwner.get().lifecycle.addObserver(AppLifecycleListener())
}
}
class AppLifecycleListener : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
Log.i(null, "Resume")
}
override fun onStop(owner: LifecycleOwner) {
Log.i(null, "Stop")
}
}
MainMenuActivity.kt
class MainMenuActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_menu)
supportActionBar?.hide()
val goToPassGeneratorScreenButton = findViewById<Button>(R.id.goToPassGeneratorScreenButton)
val goToPassCheckScreenButton = findViewById<Button>(R.id.goToPassCheckScreenButton)
val addServicePasswordButton = findViewById<Button>(R.id.addServicePasswordButton)
val updateServicePasswordButton = findViewById<Button>(R.id.updateServicePasswordButton)
val updateMasterkKeyButton = findViewById<Button>(R.id.updateMasterKeyButton)
goToPassGeneratorScreenButton.setOnClickListener {
val intent = Intent(this, PassGeneratorActivity::class.java)
startActivity(intent)
}
goToPassCheckScreenButton.setOnClickListener {
val intent = Intent(this, PassViewerActivity::class.java)
startActivity(intent)
}
addServicePasswordButton.setOnClickListener {
val intent = Intent(this, PassCreatorActivity::class.java)
startActivity(intent)
}
updateServicePasswordButton.setOnClickListener {
val intent = Intent(this, PassEditorActivity::class.java)
startActivity(intent)
}
updateMasterkKeyButton.setOnClickListener {
val intent = Intent(this, MasterKeyEditorActivity::class.java)
startActivity(intent)
}
}
override fun onBackPressed() {
moveTaskToBack(true)
}
fragment of AndroidManifest.xml
...
<application
android:name=".App"
...
</application>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论