我有一个应用程序(appA),它会使布局(layout1)膨胀,并让用户在用另一个(layout2)替换该布局之前执行操作,用户通过library("shiny")
ui <- fluidPage(
column(4,
selectInput("select", label = h3("How many rows"),
choices = list("0" = 0, "3" = 3, "6" = 6, "9" = 9),
selected = 3)
),
uiOutput("disappearing_table")
)
server <- function(input, output) {
output$Warning_1 <- renderText({
answer <- paste("We show", input$select, "rows")
})
output$Warning_2 <- renderText({
answer <- paste("As I said we show", input$select, "rows")
})
output$table <- renderDataTable({
head(mtcars, as.numeric(input$select))
},
options = list(
lengthMenu = list(c(5, 15, -1), c('5', '15', 'All')),
pageLength = 15)
)
output$disappearing_table <- renderUI({
if (input$select == "0") {
column(8,
verbatimTextOutput("Warning_1"),
verbatimTextOutput("Warning_2")
)
} else {
column(8,
verbatimTextOutput("Warning_1"),
dataTableOutput("table"),
verbatimTextOutput("Warning_2")
)
}
})
}
shinyApp(ui = ui, server = server)
<从中启动另一个应用程序(appB) / p>
appB是基于Unity3D的怪物,可以对设备内存/处理能力的限制征税,因此当appA处于后台时,它经常被Android清理干净。
当appB完成时,Android会为我重新创建appA,但这样做会让人感到困惑。
即:它调用onCreate,但它会在appA仍然显示layout2的情况下启动,layout2就是在它进入appB之前膨胀的布局。
这很令人困惑,因为onCreate重新初始化了我的所有变量,似乎从头开始但不知何故保留了仍然显示layout2的状态。
这与我在appA上调用finish()时的行为明显不同,当我启动appB然后让appB从头开始appA时,它会(并且确实)首先给layout1充气。
我的问题是这种行为不一致。很多时候Android管理appB而不需要appA内存空间并且调试这非常困难。
我想知道是否有一些手动方式(通过Android Studio或代码)激发Android清理appA,而我在appB中能够看到并测试回复的副作用应用程序在Android被重新启用之后。
答案 0 :(得分:1)
我发现这样做最方便的方法实际上就是创建一个包含一项活动的单独应用,并在onResume()
中执行以下操作:
@Override
protected void onResume() {
super.onResume();
ActivityManager activityManager =
(ActivityManager) getSystemService(ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses("your.app.id");
}
每当我需要模拟我的应用程序被Android杀死时,我只需切换到此应用程序并返回到我测试的应用程序。
答案 1 :(得分:1)
我想知道是否有一些手动方式...
是的,有。
你应该通过命令行工具或IDE杀死你的 appA 进程。
如果不重复其他开发人员的研究,我会向您发送How to simulate Android killing my process。