当前位置:  编程技术>移动开发
本页文章导读:
    ▪Activity其间的相互调用        Activity之间的相互调用 Activity1 //在按键按下后,调用第二个实体,第二个实体处理完数据后再传给第一个实体 btn3.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { final int RG_REQUE.........
    ▪ java错误的捕获与抛出原则        java异常的捕获与抛出原则 在可能会出现exception的地方,要使用try-catch或者throws或者两者都要。我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内.........
    ▪ SharedId兑现应用之间的数据共享+SharedPreferences保存用户定义类型对象       SharedId实现应用之间的数据共享+SharedPreferences保存用户定义类型对象 通常提到android应用之间的数据共享,最先想到的总是ContentProvider,其实还有一种方法也可以实现应用之间的数据共享--配.........

[1]Activity其间的相互调用
    来源: 互联网  发布时间: 2014-02-18
Activity之间的相互调用
Activity1
//在按键按下后,调用第二个实体,第二个实体处理完数据后再传给第一个实体
btn3.setOnClickListener(new Button.OnClickListener() {
	public void onClick(View v) {
		final int RG_REQUEST = 0;
		Intent intent = new Intent();
		    //作为接受数据端
		intent.setClass(Activity1.this, Activity2.class);
		startActivityForResult(intent, RG_REQUEST);
		       ///////////////////// 
		}
	});
}
//处理接收的数据
protected void onActivityResult(int requestCode,int resultCode,Intent data)
{

	super.onActivityResult(requestCode, resultCode, data)

	if(resultCode==RESULT_OK)
	{
		//接收数据
		Bundle bundle =data.getExtras();
		double aplpa=bundle.getDouble("aplpa");
		String mode=bundle.getString("mode");
		String time=bundle.getString("time");
	}
}
  Activity2
// //////////////////
// 点击按键后,确认返回处理
// ////////////
btn1.setOnClickListener(new Button.OnClickListener() {
public void onClick(View arg0) {
	// TODO Auto-generated method stub
	Bundle bundle = new Bundle();
	bundle.putInt("time", time);
	bundle.putInt("alpha", aplpa);
	bundle.putInt("mode", mode);
	Intent intent = new Intent(Activity2.this,Activity1.class);
	intent.putExtras(bundle);
	setResult(RESULT_OK, intent);
	Activity.this.finish();
}
});
 

    
[2] java错误的捕获与抛出原则
    来源: 互联网  发布时间: 2014-02-18
java异常的捕获与抛出原则
在可能会出现exception的地方,要使用try-catch或者throws或者两者都要。我的判断依据是:如果对可能出现的exception不想被外部(方法的调用者)知道,就在方法内部try-catch掉这个exception;如果希望外部知道,则在catch到之后把exception直接抛出或者抛出自定义的exception。 
一、异常的种类 
java异常可以分成两大类:Exception和RuntimeException(虽然RuntimeException是从Exception继承的)。exception异常代表“无法避免的异常” 如io异常   往往这类异常是由于外部原因造成的,程序本身无法保证他们不发生,所以这类异常必须捕获。如果在函数内部无法处理这个异常必须再次抛出(在函数后面用throws语句),如果什么都不做就出现编译错误。
runtimexception是指“可以避免的异常”,如 null引用异常,这类异常都是由程序内部原因造成的,是可以避免的。对于这类异常可以忽略他们,但一旦发生程序就会异常终止。这类异常对debug非常有帮助,当然,如果需要也可以catch。

另外,有些地方即使不会有exception,但是从商业逻辑上是错误的、非预期的,也可以抛出user exception。例如,用户输入非法,bank account非法透支等等。

二、主要原则 
处理意外的一个重要原则,就是要么处理,要么接着抛,决不能吃掉(You either handle it, or throw it. You don’t eat it.)这就是说,当你捕获一个异常之后,必须决定是否立即处理这个异常,或者继续抛出这个异常(或者另一个自定义异常),以便由调用的客户端捕获之。当客户端捕获到以后,又会继续进行类似的判断。

一般来说,GUI端是要处理异常的,比如JSP捕获到异常之后,需要先是给用户一个友好的出错信息,而不要给出系统的出错信息。系统的出错信息一方面不太友好,另一方面提供了太多的系统信息,容易被恶意用户用来攻击系统。

换句话说,所有的异常最终必须有一个终极的处理者,这就是GUI。至于中间的环节,比如在服务器端运行的JavaBean是否要处理捕获到的异常,还是继续抛出所捕获的异常,需要视具体情况处理。 

除非你想把异常处理的责任交给调用者,一般不用throws。比如你要读入一些文件,如果你想通知调用者,让调用者决定如何处理这个异常,你就把这个异常throws给调用者;如果你知道应该如何处理这个异常,或者你想把异常马上解决,你可以就地catch她。

这完全取决于你想把异常自己立即处理还是想把处理责任返回给调用者。取决于你的程序的结构和要求。 
需要注意的有:
1、如果无法处理某个异常,那就不要捕获它。 
2、如果捕获了一个异常,请不要胡乱处理它。 
3、尽量在靠近异常被抛出的地方捕获异常。 
4、在捕获异常的地方将它记录到日志中,除非您打算将它重新抛出。 
5、按照您的异常处理必须多精细来构造您的方法。 
6、需要用几种类型的异常就用几种,尤其是对于应用程序异常。 

三、异常嵌套和捕获适当的异常

按照Java语言的定义,所谓异常(Exception)指的就是向调用方法(calling method)表示发生非正常情况的习惯方式。下面讨论两种在处理异常时可兹利用的技术:异常嵌套和捕获适当的异常。

异常嵌套 
你在试图捕获异常并打算扔出异常时该采取什么措施呢?同时,你希望原始的异常信息可用吗? 

要回答以上的问题你不妨尝试一下NestedException类。具体的编程并不难,唯一要做的无非是利用构造器并且重载printStackTrace()以便显示出正确的数据。

此外,你还应当考虑封装Throwable而非Exception类来创建更具有重用性的组件。之后,你可以创建NestedRuntimeException变量封装Throwable但无需对其进行声明。

捕获适当的异常
正确地处理异常并不是一项轻松的任务,这是因为异常的处理有时会导致程序出现其他不明行为。不过,以下三条规则可以帮助你避免错误处理异常所可能遭遇的风险。

规则 #1: 总是捕获扔出异常的类型而不要理睬异常的超类。为了遵守通常的代码习惯,你可以采用Exception类的大写字母作为变量名,如下所示: 
    catch(FileNotFoundException fnfe) 
以及
    catch(SQLException sqle)

规则 # 2: 决不让catch块留空。在很多情况下虽然确实编写了try/catch块但在代码的catch部分却什么都没有做。或者,如果采用了日志API(Logging API),那么请编写代码把异常写到日志中。

规则 # 3: 决不扔出Exception基类的实例。开发人员应当总是扔出自己创建的异常类。

扔出异常的API很难处理。在声明方法扔出java.lang.Exception的情况下,所有的问题都会强加在API用户的头上,这样他们就无法以一种专业的编程方式来处理异常。通过为扔出API声明Exception类的子类这一举措,API开发人员就可以减轻用户的负担。

以上提到的两种技术在处理异常时还可能用得更好、更适当。嵌套技术令异常扔到另一异常的内部,而捕获适当的异常令程序调试大大简化。

    
[3] SharedId兑现应用之间的数据共享+SharedPreferences保存用户定义类型对象
    来源: 互联网  发布时间: 2014-02-18
SharedId实现应用之间的数据共享+SharedPreferences保存用户定义类型对象

通常提到android应用之间的数据共享,最先想到的总是ContentProvider,其实还有一种方法也可以实现应用之间的数据共享--配置SharedId



 

流程:

(1) 修改数据提供方和数据使用方的AndroidManifest.xml 中的<manifest>节点的属性

android:sharedUserId="com.mysharedId" 这里属性的值,数据提供方和调用方必须一致并且不能只有一个单词也就是说最少有一个“.”。

(2)使用

在数据使用Activity对象的createPackageContext()方法得到数据提供方的Context

有了这个Context你就可以得到数据提供方的资源了,通过getResources(),getString(),getAsset()等方式

 Context friendContext = this.createPackageContext("com.my.server", Context.CONTEXT_IGNORE_SECURITY);
在demo中还用到了 SharedPreferences保存自定义的实例对象,得导入一个类库commons-codec-1.4.jar

我在demo 中为了方便用的是String类型不是自定义的类型,但是你在这里可以将String类型替换成任意类型

实例代码如下:

//保存对象

 public void saveSetting(String str)
 {
  //将对象转换成对象流,然后通过SharedPreferences保存,在得到对象时是一个逆向的过程先得到对象流然后得到对象
  ByteArrayOutputStream baoStream = new ByteArrayOutputStream();
  ObjectOutputStream oStream;
  try {
   oStream = new ObjectOutputStream(baoStream);
   oStream.writeObject(str);
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

  SharedPreferences sharedPreferences = getSharedPreferences(
    "emotions.xml", Activity.MODE_PRIVATE);
  String productBase64 = new String(
    org.apache.commons.codec.binary.Base64.encodeBase64(baoStream
      .toByteArray()));
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putString("info", productBase64);
  editor.commit();
 }

//得到对象

 

public String  getCharSequence(Context context)
 {
  SharedPreferences sharedPreferences = context.getSharedPreferences(
    "emotions.xml", Activity.MODE_PRIVATE);
  String str = null;
  String proString = sharedPreferences.getString("info", "");
  if (proString != null && !"".equals(proString)) {
   byte[] base64Bytes = org.apache.commons.codec.binary.Base64
     .decodeBase64(proString.getBytes());
   ByteArrayInputStream bari = new ByteArrayInputStream(base64Bytes);
   ObjectInputStream oInputStream;
   try {
    oInputStream = new ObjectInputStream(bari);
    str = (String)oInputStream.readObject();
   } catch (StreamCorruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

  }
  return str;
 }

具体内容请看demo

 


    
最新技术文章:
▪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的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3