android 单例Singleton可否用于多进程?

wangcong02345 2015-01-23 12:19:51
如题!
自己编了个demo程序
root@abc:/ # main_in
one.val = 100
root@abc:/ # main_out
one.val = 0
one.val = 200
singleton不是类似于全局变量吗? 为什么同一个实例的两个val的值不一样?

cong@msi:/work/nv/git_r17/packages/test$ tree
t_in
Android.mk
main_in.cpp
oneExample.cpp
oneExample.h
t_out
Android.mk
main_out.cpp
代码如下:
cong@msi:/work/nv/git_r17/packages/test$ cat t_in/main_in.cpp 
#include <stdio.h>
#include <stdlib.h>
#include "oneExample.h"
using namespace android ;
int main ( int argc, char *argv[] )
{
oneExample& one(oneExample::getInstance());
one.val = 100;
printf("one.val = %d \n", one.val);
return EXIT_SUCCESS;
}

cong@msi:/work/nv/git_r17/packages/test$ cat t_in/oneExample.cpp 
#include "oneExample.h"
namespace android {
ANDROID_SINGLETON_STATIC_INSTANCE(oneExample)

oneExample::oneExample() {
}
oneExample::~oneExample() {

}
}


cong@msi:/work/nv/git_r17/packages/test$ cat t_in/oneExample.h 
#ifndef _ONE_EXAMPLE_H__
#define _ONE_EXAMPLE_H__
#include <utils/Singleton.h>
namespace android {
class oneExample: public Singleton<oneExample>
{
friend class Singleton<oneExample>;
public:
oneExample();
~oneExample();
int val;
};
}
#endif

cong@msi:/work/nv/git_r17/packages/test$ cat t_in/Android.mk
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
oneExample.cpp

LOCAL_C_INCLUDES :=

LOCAL_MODULE := liboneExample

LOCAL_MODULE_TAGS := optional

include $(BUILD_SHARED_LIBRARY)


include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
oneExample.cpp \
main_in.cpp
LOCAL_C_INCLUDES :=

LOCAL_SHARED_LIBRARIES := \
libcutils \
liblog \
libc \
liboneExample

LOCAL_MODULE := main_in

include $(BUILD_EXECUTABLE)

cong@msi:/work/nv/git_r17/packages/test$ cat t_out/main_out.cpp 
#include <stdio.h>
#include <stdlib.h>
#include "oneExample.h"
using namespace android ;
int main ( int argc, char *argv[] )
{
oneExample& one(oneExample::getInstance());
printf("one.val = %d \n", one.val);
one.val = 200;
printf("one.val = %d \n", one.val);
return EXIT_SUCCESS;
}

cong@msi:/work/nv/git_r17/packages/test$ cat t_out/Android.mk 
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := \
main_out.cpp

LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) \
packages/test/t_in


LOCAL_SHARED_LIBRARIES := \
libcutils \
liblog \
libc \
liboneExample

LOCAL_MODULE := main_out

include $(BUILD_EXECUTABLE)



...全文
173 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧