Android开发疑问与解答

疑问:Android界面刷新方法

Android 如果返回前面的Activity时能自动更新(刷新)

解答:

第一种方法:

引用函数 setResult和 onActivityResult处理机制

A窗体AActivity和B窗体BActivity,A进入B窗体,然后B窗体返回A窗体并要实现B窗体的界面更新

A窗体需要添加代码:

  //切换到B窗体
  public void onClick(View v) {
    Intent intent = new Intent();
    intent.setClass(AActivity.this,BActivity.class);
    Bundle bundle = new Bundle();
    bundle.putString("uid", AActivity.this.toString());
    intent.putExtras(bundle);
    startActivityForResult(intent,GET_CODE);
   }

  //重构方法
  @Override   
  protected void onActivityResult(int requestCode, int resultCode, Intent data) 
  {   
	if(requestCode == GET_CODE)
	{  
	    }   
  }

B窗体需要添加代码:

    //B窗体结束,返回A窗体
    @Override   
    public void onClick(View v) 
    {   
       setResult(RESULT_OK,(new Intent()).setAction(uid));   
       finish();   
    }

疑问:Android消息推送机制

Android经常需要APP程序与服务器同步最新数据,并通过声音或者图标提醒用户,一般服务器与客户端同步数据分两种,第一种是客户端使用Pull(拉)的模式,隔一段时间就去服务器上获取信息,看是否有更新的信息出现。第二种就是 服务器使用Push(推送)的模式,当服务器端有新信息了,则把最新的信息Push到客户端上。

如果能实现Push(推送)模式的话就最理想化,不需要客户端定时的去监听服务器的数据,省流量并且用户体验好。

解答:



疑问:Android文字或字体(Textview)加下划线

比如登陆界面中的“忘记密码”一般都有下划线,怎么添加?

解答:

有两种方法:

1)textView.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG)

2)textView.setText(Html.fromHtml("<u>找回密码</u>"))

第一种效果不好,会出现锯齿状的字体,还是采用第二种方法。


疑问:Android手机访问IP地址的webservice网络失败

部署过一个webservice,但因为没有域名,所以地址就用IP地址组成,但很多手机访问的时候出现网络连接失败。而且SDK低版本的可以访问,高版本的不能连接。

android.os.NetworkOnMainThreadException

解答:

怀疑1:初步判断应该是手机安全或管理软件(91助手)屏蔽了IP地址形式访问外网,或者从IP地址外网获取数据

怀疑2:根据反馈情况,android4.0以上的访问都有问题,所以怀疑调用webservice的开发包ksoap2-android-assembly-2.4-jar-with-dependencies.jar需要更新为最新版本,版本有点老

怀疑3:android4.0系统不允许主线程(UI线程)访问网络

如:http://www.hicrm.com.cn/App/Component/InfoMgr/InfoPreview.aspx?idsType=idsView&idsID=20121110162334069529

 最终判断是怀疑3的问题,所以在初始化界面加如下代码就OK了:

       if (version >= 11){
           //android3.0后调用webservice需要加这段代码
           StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()   
          .detectDiskReads()   
          .detectDiskWrites()   
          .detectNetwork()   // or .detectAll() for all detectable problems   
          .penaltyLog()   
          .build());   
          StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()   
          .detectLeakedSqlLiteObjects()   
          //.detectLeakedClosableObjects()   
          .penaltyLog()   
          .penaltyDeath()   
          .build()); 
       }



 疑问:Android界面缓冲

缓冲界面具有进入应用时判断网络、获取平台数据、展示logo等功能,因此在android应用中登陆之前使用图片或者动画做缓冲界面

解答:

public class AppStart extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final View view = View.inflate(this, R.layout.start, null);
		setContentView(view);
        
		//渐变展示启动屏
		AlphaAnimation aa = new AlphaAnimation(0.3f,1.0f);
		aa.setDuration(3000);
		view.startAnimation(aa);
		aa.setAnimationListener(new AnimationListener()
		{
			@Override
			public void onAnimationEnd(Animation arg0) {		
				redirectTo();
			}
			@Override
			public void onAnimationRepeat(Animation animation) {}
			@Override
			public void onAnimationStart(Animation animation) {

			}
			
		});
		
    }
    
    /**
     * 跳转到...
     */
    private void redirectTo(){        
        Intent intent = new Intent(this, Login.class);
        startActivity(intent);
        finish();
    }
}


疑问:Android怎么读取硬件设备信息


解答:




作者:水煮鱼
出处:http://blog.csdn.net/sheshou2/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值