当前位置:  编程技术>移动开发
本页文章导读:
    ▪Struct构造体定义和NSRange, NSPoint得使用        Struct结构体定义和NSRange, NSPoint得使用 结构体类型定义: struct Date = { int year; int month; int day; }; struct Date d = {2013,8,17}; d.day = 6; 或者 typedef struct Date = { int year; int month; int day; } .........
    ▪ activity onResume的了解,跨应用广播        activity onResume的理解,跨应用广播 在一次开发中,为了利用广播broadcast实现跨应用通讯,写了2个测试应用,BroadcastCrossApps1和BroadcastCrossApps2。   在BroadcastCrossApps1的MainActivity有个按钮,按下.........
    ▪ 16进制色彩转换       16进制颜色转换 #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]   使.........

[1]Struct构造体定义和NSRange, NSPoint得使用
    来源: 互联网  发布时间: 2014-02-18
Struct结构体定义和NSRange, NSPoint得使用
结构体类型定义:
struct Date = {
    int year;
    int month;
    int day;
};
struct Date d = {2013,8,17};
d.day = 6;


或者
typedef struct Date = {
    int year;
    int month;
    int day;
} Date;
Date d = {2013, 9, 18};



NSRange得使用
NSRange range = NSMakeRange(8, 10);
range.location
range.length

//转变成字符串打印出来
NSString *str = NSStringFromRange(8, 11);
NSLog(@"%@", str);


NSPoint得使用
//x = 10, y = 9
NSPoint p = NSMakePoint(10,9);
NSString *str = NSStringFromPoint(p);
NSLog(@"%@", str);


NSSize得使用
//NSSize包括width和height
NSSize s = NSMakeSize(100, 50);
NSString *str = NSStringFromSize(s);


NSRect得使用
//NSRect包括origin和size
NSRect r = NSMakeRect(10,5, 100, 100);
NSString *str = NSStringFromRect(r);

    
[2] activity onResume的了解,跨应用广播
    来源: 互联网  发布时间: 2014-02-18
activity onResume的理解,跨应用广播

在一次开发中,为了利用广播broadcast实现跨应用通讯,写了2个测试应用,BroadcastCrossApps1和BroadcastCrossApps2。

 

在BroadcastCrossApps1的MainActivity有个按钮,按下事件发送广播至BroadcastCrossApps2的TestReceiver,该TestReceiver启动该应用(即BroadcastCrossApps2)中MainActivity。同样,BroadcastCrossApps2的MainActivity也有发送给BroadcastCrossApps1的TestReceiver的广播。

 

简单贴出BroadcastCrossApps1的部分代码:

MainActivity.java

		Button btn = (Button) findViewById(R.id.button1);
		btn.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				Time time = new Time();
				time.setToNow();
				Intent intent = new Intent("info.zhegui.broadcast2");
				intent.putExtra("value", "来自broadcast1的广播 " + time.format2445());
				sendBroadcast(intent);

				//finish();  //此处的finish帮助我们分析onResume结果
			}
		});

 TestReceiver.java

		Log.e(TAG,"TestReceiver 1 onReceive()"+ intent.getStringExtra("value"));
		
		Intent intent2=new Intent();
		intent2.setClass(context, MainActivity.class);
		intent2.putExtra("value", intent.getStringExtra("value"));
		intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(intent2);

AndroidManifest.xml

<permission android:name="info.zhegui.broadcast2" />

    <uses-permission android:name="info.zhegui.broadcast1" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="info.zhegui.broadcast1.MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleTop" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="info.zhegui.broadcast1.TestReceiver" >
            <intent-filter>
                <action android:name="info.zhegui.broadcast1" />
            </intent-filter>
        </receiver>
    </application>

 

接下来测试,表面上的效果是:点应用1 MainActivity的按钮可以启动应用2的MainActivity,点应用2 MainActivity的按钮可以应用应用1的MainActvitiy,循环的效果。实际上是: 应用1的MainActivity按钮事件发送广播,启动应用2的TestReceiver,再由应用2的TestReceiver启动应用2的MainActivity。接着就用rMainActivity按钮事件发送广播,启动应用1的TestReceiver……

 

一,跨应用的通讯(广播)已经实现了,接下来问题产生了。就是,如果两个应用最初都是通过adt安装并启动,即在MainActivity已启动onCreate()的情况下,为什么在MainActivity的onResume()中获取不到getIntent()中的value值呢?

 

按最初的理解,startActivity()时,如果该activity已经启动oncreate(),那么会跨过onCreate()而直接调用onResume(),这样在onResume()中可通过getIntent()获取到传来的intent。这时本应该可正常获取intent中的value值的!

但实际上并没有!

 

二,为了作个对比,通过DDMS的devcies视图,将其中一个应用stop掉,这里我们假设stop应用1。我们通过应用2的按钮启动应用1的MainActivity,这时应用1 的activity在onResume()时获取到了getIntent()的value值!

但继续点击应用1的按钮,应用2没有获取到value值。循环点击两个应用的按钮,都只有应用1获取的value值,应用2获取不到!

 

三,再作个对比,根据同事灰太狼建议,把MainActivity的按钮事件中已经注释掉的finish的注释去掉,使该行代码有效!再运行其中一应用,然后循环点击两个应用的按钮。这次两个应用都可获取至value值

 

结论:

通过上面的对比,我们可以唯一可以想到造成这个原因的是,当activity已onCreate()后,startActivity()的效果只是将该activity显示而已,却无法将intent中的参数传递给activity。与最初的理解不同,最初我认为,如果该activity已onCreate(),那么onResume()仍可获取intent的参数。看来最初的理解错了!

 


    
[3] 16进制色彩转换
    来源: 互联网  发布时间: 2014-02-18
16进制颜色转换
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

 

使用示例:

 

UIColor *color = UIColorFromRGB(0xDDEEFF);

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
sqlserver iis7站长之家
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3