当前位置:  编程技术>综合
本页文章导读:
    ▪Activity生命周期管理之二——Pausing或者Resuming一个Activity      app使用期间,前台Activity经常被其他的可视组件遮挡,进入paused状态,例如一个对话框弹出时,只要Activity部分可见,但没获得焦点,就处在paused状态 然而,一旦Activity完全不可见,就处在stopp.........
    ▪将C++代码手工移植为JAVA代码 是不是纯扯淡?      我现在手头有一份基于MFC架构的C++项目。 目标是:把部分功能代码移植到安卓上。 目前进展: 注:非指针类型的数据的迁移十分简单,不赘述。   1.    struct 类型内成员变量.........
    ▪win32环境配置以及eclipse+ndk+sdk+cygwin的android移植      目前整个学习笔记的版本是cocos2d-x 2.1.0beta3。 准备开始做cocos2d-x的跨平台游戏。因为主力做的还是android,所以趁刚开始先搞定win32版本到android的移植步骤吧。 第一步:cocos2d-x+vs环境 这个.........

[1]Activity生命周期管理之二——Pausing或者Resuming一个Activity
    来源: 互联网  发布时间: 2013-11-10

app使用期间,前台Activity经常被其他的可视组件遮挡,进入paused状态,例如一个对话框弹出时,只要Activity部分可见,但没获得焦点,就处在paused状态

然而,一旦Activity完全不可见,就处在stopped状态

当Activity进入paused状态时,系统调用onPause()方法,其中你可以停止一些任务,或者保存一些数据防止用户其后又退出,如果用户又返回,可以调用onResume()方法脱离paused状态

Note: 当Activity接到一个onPause()调用时,可能预示着用户是暂时离开,还会回来,也通常是用户离开时的第一个提示

  Pause你的Activity

当Activity接到一个onPause()调用,技术上意味着Activity部分可见,但通常表示用户离开这个Activity,即将进入stopped状态,在onPause()中,通常要做一下事情:

  • 停止动画或者其他正在进行的耗费CPU的动作
  • 提交未保存的变化,但是只有在用户认为数据应该被保存的时候,例如邮件的草稿
  • 释放系统资源,例如broadcast receivers, 传感器句柄(例如GPS),或者其他影响电池电量而用户有不用的资源

例如,使用照相机,在onPause()中就可以关掉

@Override
public void onPause() {
    super.onPause();  // Always call the superclass method first

    // Release the Camera because we don't need it when paused
    // and other activities might need to use it.
    if (mCamera != null) {
        mCamera.release()
        mCamera = null;
    }
}


通常,不应该在onPause()中关闭CPU敏感的资源,像database connection,会延缓Activity之间的转换,他们最好在onStop()中实现

如果Activity将要进入Stopped状态,在onPause()中就要相对简单的完成操作以使用户能尽快转到下一个Activity,免得影响用户体验

Note: Activity处于paused状态时,Activity的实例还在内存中存在,回到Resumed状态时不需要重新初始化

Resume你的Activity

从paused状态到resumed状态调用onResume()

只要Activity到前台就要调用onResume()方法,包括第一次创建Activity,所以在onRe()方法中要初始化onPause()中释放的组件和其他每次进入resumed状态要实现的动作,例如动画或者只有在获得用户焦点才需要初始化的组件

例如,下面的例子初始化在onPause()中释放的Carema

@Override
public void onResume() {
    super.onResume();  // Always call the superclass method first

    // Get the Camera instance as the activity achieves full user focus
    if (mCamera == null) {
        initializeCamera(); // Local method to handle camera init
    }
}


作者:RO_wsy 发表于2013-1-13 8:14:02 原文链接
阅读:43 评论:0 查看评论

    
[2]将C++代码手工移植为JAVA代码 是不是纯扯淡?
    来源: 互联网  发布时间: 2013-11-10

我现在手头有一份基于MFC架构的C++项目。

目标是:把部分功能代码移植到安卓上。

目前进展:

注:非指针类型的数据的迁移十分简单,不赘述。

  1.    struct 类型内成员变量指针。

   例子:struct Node
    {		
        /// it seems that the member order should be placed according to access frequency
	    NLinkFlowType	m_nCap[NeighborhoodSize];		        
		
        TLinkFlowType	m_tCap; // if m_tCap > 0, then residual capacity of edge source->node is m_tCap
							    // if m_tCap < 0, then residual capacity of edge node->sink is -m_tCap        		        	        


        unsigned int    m_ts;   /// time stamp
        unsigned int    m_dist; /// distance to the terminal


        unsigned int    m_parent : 4;
	    unsigned int   	m_tree : 1; // 0 = source, 1 = sink (if parent!=PARENT_FREE)
        
        unsigned int    m_isDumb: 1;    /// whether participating in the maxflow


        Node*			m_next; // queue of active nodes               


        NLinkFlowType   m_nCapOld[3];    /// for recording the capacity in the modified residual graph               


        NLinkFlowType   m_nCapSub[3];   /// for sub-division    
    };  /// struct Node 
              方案:将struct类型转换为class类型。其中的C++的指针队列部分就忽略掉。

   2.    类中成员变量&函数中成员变量指针

               方案:转换为class类型。 

   3.    函数指针 

                例子:typedef bool (*ProgressCallback)( int numSoFar, void* callbackData );

                方案:目前无。求指教。

   4.    形式参数& 函数返回值

                例子: Node* GetNeib(Node* p, int e)
{
return (Node*)((char*)p + m_nodeShifts[e]);
}

                 方案: 转换为class类型。 

               

    5. void指针

                例子:

                

           void* callbackData

   GridGraph8::GridGraph8(int sizeX, int sizeY, ProgressCallback abortCallback, void* callbackData)
                  : m_nodes(NULL),
                         m_pAuxNodeInfo(NULL), 
                         m_threadsNum(1), 
                         m_abortCallback(abortCallback),
                         m_callbackData(callbackData)
{
Allocate(sizeX, sizeY); 
}

              方案:目前无。求指教。

               


我看网上有说JAVA中用JNI调用C++之类。但是我自己没有做过。不敢尝试,时间也不那么允许。好久没有给导师提交阶段进展报告了。



作者:lvfengoo 发表于2013-1-13 8:07:26 原文链接
阅读:47 评论:0 查看评论

    
[3]win32环境配置以及eclipse+ndk+sdk+cygwin的android移植
    来源: 互联网  发布时间: 2013-11-10

目前整个学习笔记的版本是cocos2d-x 2.1.0beta3。

准备开始做cocos2d-x的跨平台游戏。因为主力做的还是android,所以趁刚开始先搞定win32版本到android的移植步骤吧。

第一步:cocos2d-x+vs环境

这个很容易,跟着官网教程cn.cocos2d-x.org就可以搞定。

我这里再简单说一下。

1.从http://cocos2d-x.org/projects/cocos2d-x/wiki/Download下载最新版本的cocos2d-2.1beta3-x-2.1.0 @ Dec 05 2012。

我下载后解压到了E:\cocos2d-2.1下。

然后找一个vs来安装,安装后点击cocos2d-2.1目录当中的cocos2d-win32-vc2010.sln解决方案。我安装的是vs2010,所以用的是2010的解决方案。顺便说下我的vs2010安装了vxa插件和vsvim插件,有兴趣的朋友可以去看下,这里就不说了。



用vs2010打开解决方案以后点击生成解决方案


这个要花一些时间,慢慢等吧。

生成完成以后,可以直接启动HelloCpp看是否成功。

好的,出现这个图说明已经安装成功了。


接下来试试创建自己的Hello项目。

先点击目录下的install-templates-msvc.bat,这样就会生成模板

然后回到vs2010,点解决方案->添加->新建项目,

一路点确定,这里我们不需要box2d就不点了。

ok建立成功。


接着直接点击这个项目启动新实例就可以看到成果了(为了方便可以把它设置为启动项目)。

应该可以顺利成功。

然后我们进源码来随便改一下HelloworldScene.cpp

把hello world改成hello android

运行

ok没有问题。

好了接下来才是重点。

第二步:android开发环境

1.安装eclipse+cdt+adt

以前的教程里面需要先下载eclipse,安装cdt,安装adt之类的,不过现在已经没有这个必要了。

我们先来到android的开发者官网,找到bundle。http://developer.android.com/sdk/installing/bundle.html


是的,伟大的谷歌大神告诉我们,现在可以使用集成版的IDE了。

所以还等什么呢,赶快去下载吧。

在这里找到你要的版本。

下载后解压。我是解压到了e:\android下面。

解压完成后是这样的

直接打开eclipse

是的,cdt这些东西已经装好,也就不需要我们再麻烦配置了。

接下来有一条要再说一下的就是这里的sdk其实不是很全,可以点击window->android sdk manager选择版本下载安装。

我这里装的是4.2的api

2.安装ndk

这个也简单,找到ndk下载后解压即可。

ndk下载的地址http://developer.android.com/tools/sdk/ndk/index.html#Installing

记得下载windows版本的!不要以为cygwin是类似unix环境就用linux版,你会后悔的(好吧我就是这里中招了= =不过搞不好也只有我这种刚从linux下转回windows的会中招也说不定)

我下载后解压到了e:\ndk目录下

3.安装cgywin

http://www.cygwin.com

在这里下载

下载以后安装就不用多说了,选择install from internet,接着选择一个根目录

接着点下一步下一步

在这里选择想要安装的软件,autoconf2.1、automake1.10、binutils、gcc-core、gcc- , g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make

大概这些就行了。

可以把setup.exe放到cgywin的根目录下,这样方便以后装新的软件(重新点击setup.exe选择新的就可以了)

这是一个类linux环境,装好以后可以进去试试。

注意这个要进行配置

编辑.bashrc

在底部加入

# 让ls和dir命令显示中文和颜色
export LESSCHARSET=latin1
alias ls='ls --show-control-chars -hF --color=tty'
alias dir='dir -N --color'
# 设置为中文环境,使提示成为中文
export LANG="zh_CN.GBK"

当然,cygwin的中文支持真的很糟糕,这样做以后有时候还是会出现乱码。谋事在人成事在天就这样吧= =

接着还要编辑一下.bash_profile,环境变量放在这里。(其实放在.bashrc也可以,不过这里就这样吧)

添加下面这些内容

export NDK_ROOT="/cygdrive/e/android/ndk"
export SDK_ROOT="/cygdrive/e/android/sdk"
export PATH=$PATH:NDK_ROOT
export PATH=$PATH:SDK_ROOT
export COCOS2DX_ROOT="/cygdrive/e/cocos2d-2.1"
export NDK_TOOLCHAIN_VERSION=4.7
# adb PATH
export PATH=$PATH:/cygdrive/e/android/sdk/platform-tools/


    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3