我正在尝试做的事情:
我目前在
Activity A
中(在应用A中)。我启动了Activity B
(在应用B中)使用startActivity()
。完成Activity B
的操作后, 而不是仅仅完成并期望Activity A
出现,我 实际恢复Activity A
的目的是为了防止Activity A
被 在后台被杀死。
当前dumpsys
日志:
在Activity A
Stack #0:
Task id #23
userId=0 effectiveUid=u0a123 mCallingUid=0 mUserSetupComplete=true mCallingPackage=null
affinity=com.domain.appA
intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800100 cmp=com.domain.appA/.ActivityA}
realActivity=com.domain.appA/.ActivityA
启动Activity B
时
Stack #1:
Task id #25
userId=0 effectiveUid=u0a99 mCallingUid=u0a123 mUserSetupComplete=true mCallingPackage=com.domain.appA
affinity=com.domain.appB
intent={act=MY_ACTION flg=0x10000000 cmp=com.domain.appB/com.domain.appB.ActivityB}
realActivity=com.domain.appB/com.domain.appB.ActivityB
Stack #0:
Task id #23
userId=0 effectiveUid=u0a123 mCallingUid=0 mUserSetupComplete=true mCallingPackage=null
affinity=com.domain.appA
intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800100 cmp=com.domain.appA/.ActivityA}
realActivity=com.domain.appA/.ActivityA
从Activity A
启动Activity B
Stack #1:
Task id #26
userId=0 effectiveUid=u0a123 mCallingUid=u0a99 mUserSetupComplete=true mCallingPackage=com.domain.appB
affinity=com.domain.appA
intent={act=ACTION_FOR_A flg=0x10820000 cmp=com.domain.appA/.ActivityA}
realActivity=com.domain.appA/.ActivityA
Stack #0:
Task id #23
userId=0 effectiveUid=u0a123 mCallingUid=0 mUserSetupComplete=true mCallingPackage=null
affinity=com.domain.appA
intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800100 cmp=com.domain.appA/.ActivityA}
realActivity=com.domain.appA/.ActivityA
观察到的性行为:
Activity A
实际上没有被恢复,而是实际上再次被实例化,导致2个实例并中断了流程,因为第二个实例是一个新实例,导致onCreate()
被调用,而require onNewIntent()
的连续性被呼叫。
注意:
我正在使用标志Activity B
启动FLAG_ACTIVITY_NEW_TASK
,因为即使Activity B
在后台被杀死,我也希望Activity A
被保留。
所需行为:
从
Activity B
发送Activity A
的意图时,如果Activity A
在后台仍然有效,则应恢复Activity B
实例化,以防它在后台被杀死。
可能的解决方案,我想这里可能是在启动Stack #0
时可以在意图中设置一些标志,以便只有Stack #1
而没有task
。正在创建的第二个堆栈似乎在这里出现问题。
如果有人也可以弄清stack
和task
之间的区别,我将能够更好地理解,因为这似乎与Android文档中描述的from __future__ import print_function
from builtins import input
mylist = ['apple', 'banana', 'pineapple']
mylist.pop(mylist.index(input('Which element do you want to remove from the list?')))
print(mylist)
不一致。