窗口关系

1.返回键和自定义返回键保持一致。

重写public boolean onKeyDown(int keyCode, KeyEvent event)函数

2 .<activity android:name="xxx"  android:launchMode="xx" >中的android:launchMode属性值,严重影响Activity在task栈中的存储方式。
</activity>


>弄清楚Standard(默认)和singleTask的区别,这个在用到startActivityForResult时差别特别大。在Standard下才能回传成功。(个人理解貌似连个activity必须在同一个task中,才能回传成功,而且必须相邻。否则不能传递失败值。还没启动下一个Activity就接受到了失败值返回码。


3.对于singleTask:(实践总结)

(1)ABCD

 ABCD全是singleTask,从D返回C,再从C启动D,发现D已存在,结果回到D,但是D页面的数据没有刷新。

》由此可见,从D按返回键返回到C时没有销毁掉D。

》若从D返回C,再从C启动D时,设置DIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 发现D时新数据,说明是新创建的。

由此可以解决singleTask按返回键,返回再重新打开页面刷新数据的问题。

(2)每次由A打开B,是否要finish掉A的问题

》这涉及到点返回按钮,界面回到哪的问题以及刷新数据的问题

》若每次finish掉A,重写返回按钮事件,B返回重新打开A时,可以解决数据刷新的问题。不过每个页面需重写返回按钮事件,有时分多种情况。

(3)startActivityForResult:在Standard下能回传成功结果,(个人理解貌似连个activity必须在同一个task中,才能回传成功,而且必须相邻。在singleTask下,不在同一个task中,只能回传失败结果值。否则不能传递失败值。还没启动下一个Activity就接受到了失败值返回码。


5

(1)A>B>C:

C返回B的时候,如何刷新数据?

         (1

           方法:重写返回操作,打开B,关闭C。即A>B。

         (2

         方法:startActivityForResult(android:launchMode属性值为Standard时,不能为singleTask

(2)A>B>C:

 B启动C的时候finish(),

         A>C

      问题:  返回的时候如何启动新的B?

      方法:重写返回操作,打开B,栈移除C。即A>B。

你可能感兴趣的:(c,android,存储)