[英]A way of knowing what activity will be launched when BACK is pressed in Android
我需要知道是否有什么方法可以知道何時在活動上按下后退按鈕時將打開的活動。 我想我可以看一下活動堆棧,但是我需要一些如何做的指針。
提前致謝。
編輯:感謝所有的答案,但我仍然想解釋真正的問題。
我有一個應用程序,其中有很多活動會消耗大量電能(傳感器,gps和wifi),當我不使用“任務”(即要做其他事情)時,我想保持安靜。
我如何捕獲在后堆棧中沒有我的應用程序的事件?
如果您可以猜測哪個活動,則可以在條件語句中使用instanceof方法
@Override
public void onBackPressed(){
Context mycontext = this;
if(mycontext instanceof className)
{
startActivity(new Intent(this, distinatinClass);
}
else if(mycontext instanceof differentClassName)
....
else
....
}
這也應該有所幫助 。
各種API,變量可用:
taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
將額外的意圖從ActivityX
發送到ActivityY
。 多余的內容可能是對標識活動的常量值的引用。
ActivityX
:
startActivity(new Intent(context, ActivityY.class).putExtra("fromActivity", Const.EXTRA_FROM_ACTIVITY_X));
ActivityYB
:
private int fromActivity;
public void onCreate(Bundle savedInstanceState) {
...
fromActivity = getIntent().getExtras().getInt("fromActivity");
...
}
public void onBackPressed() {
switch(fromActivity) {
case Const.EXTRA_FROM_ACTIVITY_X:
//we are going back to ActivityX
break;
}
}
其中Const
是一個類,包含唯一的static final int
變量,例如EXTRA_FROM_ACTIVITY_X
我認為您應該用更多細節更好地描述您的問題,以便讓我們幫助您找到最佳解決方案,而不是試圖找到一種方法來實施您選擇的解決方案,因為它違反了Android OS的原理和假設,因此看起來很糟糕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.