技术库 > Java

Android程序单例运行

技术库:tec.5lulu.com

1 配置实现

<applicationandroid:icon="@drawable/icon"
android:label="@string/app_name"
android:launchMode="singleInstance">

2 ServiceManager实现示例

public final class ServiceManager {
    private static finalString TAG ="ServiceManager";
    private static IServiceManager sServiceManager;
    private static IServiceManager getIServiceManager() {
        if(sServiceManager !=null) {
            returnsServiceManager;
        }
        // Find the service manager
        sServiceManager = ServiceManagerNative.asInterface(BinderInternal.getContextObject());
        return sServiceManager;
}
……
} 

3 Activity单例实现

Android开发中经常会碰到当用户通过菜单操作重新回到之前的某个Activity的时候,希望该Activity能回到之前的状态,而不是重新创建一遍,比如常用的main Activity。这个时候就需要用到launchMode的单任务属性了
androidactivity的管理是用堆栈的方式。当启动一个新的activity时,此activity就被push到栈顶并获得焦点,旧栈顶的activity仍然存在,但是已经stop。当用户按下back键时,将栈顶的activity pop掉。此时新栈顶的activity resume。
单任务的activity如下方法进行创建

1 需要在Manifest.xml定义该Activity的launchmode,添加如下属性

android:launchMode="singleTask"
launchMode包含4种值。
standard为默认值,通常会在activity开始时创建一个新的实例。
singleTop当启动一个已经有实例在最前面(即栈顶)的activity时,重用此实例,
然后去调用onNewIntent() 函数,创建新的intent
singleTask当要去一个已经有task启动的activity的时候,不会去创建新的实例,而是将该task调至最前,已经存在的实例会去调onNewIntent()函数创建新的intent而对于之前的控件不会去销毁,这又节省了创建view的时间
singleInstance当要创建新的activity时会在新的task中创建activity,即一个task中只能存在一个该activity的实例

2 在activity中新增

protected void onNewIntent(Intent intent)
函数。因为在该activity时需要调用此函数

Android程序单例运行


标签: android activity 本文链接 http://tec.5lulu.com/detail/110d5n2ehcg9y85a6.html

我来评分 :6.1
0

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议

www.5lulu.com