当前位置:  编程技术>移动开发
本页文章导读:
    ▪Content Provider(以上简称为CP)的加载        Content Provider(以下简称为CP)的加载 在实际开发中,CP有以下两种用法:1)和应用在一个APK包里这种情况下和应用在同一进程中。process name和uid都一样。2)单独在一个APK包里。这种情况.........
    ▪ 获取下网IP        获取上网IP     这两天在做一个根据IP地址来定位城市的功能。两个方案:1.自己解析纯真IP库,2.用网上现成的IP查询接口获取IP。这两个方案都做了,但是觉得第一个方案实在是太操蛋了.........
    ▪ 解决listview设置背景图片以后,拖动出现黑色的有关问题       解决listview设置背景图片以后,拖动出现黑色的问题。 android接受的颜色: #RGB, #ARGB, #RRGGBB, #AARRGGBB 注意每种写法对应的位数不同。   解决listview设置背景图片以后,拖动出现黑色的问题。 To .........

[1]Content Provider(以上简称为CP)的加载
    来源: 互联网  发布时间: 2014-02-18
Content Provider(以下简称为CP)的加载
在实际开发中,CP有以下两种用法:
1)和应用在一个APK包里
这种情况下和应用在同一进程中。process name和uid都一样。
2)单独在一个APK包里。
这种情况下,如果在AndroidManifest.xml文件里声明了和某个进程同属一个进程,如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
       
package="com.android.providers.telephony"
       
android:sharedUserId="android.uid.phone"
>
<application android:process="com.android.phone"
                
android:allowClearUserData="false"
                
android:label="Dialer Storage"
                
android:icon="@drawable/ic_launcher_phone">
       
<provider android:name="TelephonyProvider"
android:authorities="telephony"
android:multiprocess="true" />
这个里面通过android:sharedUserId="android.uid.phone"和android:process="com.android.phone"声明了该CP是和phone进程同属一个进程,拥有同样的process name和uid.
如果没有上述声明,那么该CP是在独立的进程中,拥有属于自己的process name和uid.
以上两种用法可以总结为:
1)CP和某个进程同属一个进程
这种情况下,当该进程启动时,会搜索属于该进程的所有CP,并加载。
2)CP属于独立的一个进程。
这种情况下,只有需要用到该CP时,才会去加载。
那么,当一个进程想要操作一个CP时,先需要获取该CP的对象,系统是如何处理呢:
1)如果该CP属于当前主叫进程,因为在进程启动时就已经加载过了,所以系统会直接返回该CP的对象。
2)如果该CP不属于当前主叫进程,那么系统会进行相关处理(由ActivityManagerService进行,以下简称为AMS):
所有已加载的CP信息都已保存在AMS中。当需要获取某个CP的对象时,AMS会先判断该CP是否已被加载
----如果已被加载,该CP和当前主叫进程不属一个进程,但是该CP设置了multiprocess的属性(如上例中的 android:multiprocess="true"),并且该CP属于系统级CP,那么就在当前主叫进程内部新生成该CP的对象。否则就需要通过 IPC机制进行调用。
----如果还未被加载,该CP和当前主叫进程不属一个进程,但是该CP设置了multiprocess的属性(如上例中的 android:multiprocess="true"),并且该CP属于系统级CP,那么就在当前主叫进程内部新生成该CP的对象。否则就需要先创建该CP所在的进程,然后再通过IPC机制进行调用。

    
[2] 获取下网IP
    来源: 互联网  发布时间: 2014-02-18
获取上网IP
    这两天在做一个根据IP地址来定位城市的功能。两个方案:1.自己解析纯真IP库,2.用网上现成的IP查询接口获取IP。这两个方案都做了,但是觉得第一个方案实在是太操蛋了,qqwry.dat文件就8M,再加上我的程序,这个文件就太大了,装好就有7M左右,实在是恐怖。所以就执行了第二个方案。移动互联网嘛,不互联怎么和世界沟通??呵呵……接下来的问题就来了,我怎么获取我自己的IP呢?
网上有这个方法:
public String getLocalIpAddress() {  
    try {  
        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {  
            NetworkInterface intf = en.nextElement();  
            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {  
                InetAddress inetAddress = enumIpAddr.nextElement();  
                if (!inetAddress.isLoopbackAddress()) {  
                    return inetAddress.getHostAddress().toString();  
                }  
            }  
        }  
    } catch (SocketException ex) {  
        Log.e(LOG_TAG, ex.toString());  
    }  
    return null;  
}  
这个方法的确是可以获得IP,但是这个IP大多数获得是局域网的IP。杯具了……只要使用SIM卡上网,绝对获得的是局域网的IP,想根据IP定位不肯能啊~~~
想了一下午,最后我用了一个比较无耻的方法:上网,去获得自己的IP,再把这个IP抓出来。^_^……下面是方法,很简单:
public class IPNetUtils {
	
	private static final String IP_URL = "http://www.ip138.com/ip2city.asp";
	private static final String CHARTSET = "UTF-8";

	/**
	 * 获得IP
	 * 
	 * @return
	 */
	public static String getIPInfo() {
		URL urlInUse = null;
		URLConnection conn = null;
		ArrayList<String> list = new ArrayList<String>();
		String temp = "";
		try {
			urlInUse = new URL(/blog_article/IP_URL/index.html);
			conn = urlInUse.openConnection();
			InputStream in = conn.getInputStream();
			BufferedReader bf = new BufferedReader(new InputStreamReader(in,CHARTSET));
			String line = "";
			while ((line = bf.readLine()) != null) {
				list.add(line.trim());
			}
			if (list != null) {
				temp = list.get(5);
			}
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return getIP(temp);
	}

	/**
	 * 截取IP
	 * 
	 * @param str
	 * @return
	 */
	private static String getIP(String str) {
		return str.substring(str.indexOf('[') + 1, str.indexOf(']'));
	}
}

方法虽然笨,但是问题解决了,蛋痛了一下午……如果有那位大牛知道其他方法,希望告知,我很想知道怎么直接获取,我这个方法是真的很无奈的方法。

    
[3] 解决listview设置背景图片以后,拖动出现黑色的有关问题
    来源: 互联网  发布时间: 2014-02-18
解决listview设置背景图片以后,拖动出现黑色的问题。

android接受的颜色: #RGB, #ARGB, #RRGGBB, #AARRGGBB

注意每种写法对应的位数不同。

 

解决listview设置背景图片以后,拖动出现黑色的问题。

To fix this issue, all you have to do is either disable the cache color hint optimization, if you use a non-solid color background, or set the hint to the appropriate solid color value. You can do this from code (see setCacheColorHint(int)) or preferably from XML, by using the android:cacheColorHint attribute. To disable the optimization, simply use the transparent color #00000000. The following screenshot shows a list with android:cacheColorHint="#00000000" set in the XML layout file:

 

这里的#00000000 应该是#AARRGGBB写法。

 

 

 

 


    
最新技术文章:
▪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添加多个可点击的文本
nosql iis7站长之家
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3