Can I gain some efficiency by declaring appropriat

2019-03-17 13:52发布

If an Activity is a singleton in practice, I think I can gain some efficiency by declaring appropriate members "static", with zero risk. Yes?

5条回答
贼婆χ
2楼-- · 2019-03-17 14:14

The Android documentation says -

there's never more than one instance of a "singleTask" or "singleInstance" activity, so that instance is expected to handle all new intents.

This means you can use static members.

Besides, a standard or singleTop should have thread-safe static members only. Suppose the current activity stack is A-B-C-D. If the arriving intent is for an activity of type B which is in "standard" or "singleTop" mode. A new instance of B would be launched as (since B is not at the top of the stack), so the resulting stack would be A-B-C-D-B.

查看更多
姐就是有狂的资本
3楼-- · 2019-03-17 14:14

Yes, an Activity can be a "singleton" if you ensure that an instance of Activity A isn't started while another instance of Activity A is in the activity stack (an instance of Activity A could technically start another instance of itself).

查看更多
Evening l夕情丶
4楼-- · 2019-03-17 14:18

One thing please DO NOT use singleTask or singleInstance for this purpose. The activity launch flags are there to control how activity stacks behave. They have visible impact on the user interaction with your activity (making it non-standard). Those modes are intended to be used when you want that kind of user interaction, they should NOT be used to change the implementation details of your app.

查看更多
别忘想泡老子
5楼-- · 2019-03-17 14:21

No. The same Activity can be started multiple times in the same process. For example, you can try starting an Activity from itself, when clicking a button.

查看更多
聊天终结者
6楼-- · 2019-03-17 14:29

Please see the activity property launchMode at android.developer page.

Quote: "standard is the default mode and is appropriate for most types of activities. SingleTop is also a common and useful launch mode for many types of activities. The other modes — singleTask and singleInstance — are not appropriate for most applications, since they result in an interaction model that is likely to be unfamiliar to users and is very different from most other applications."

查看更多
登录 后发表回答