当前位置:  编程技术>移动开发
本页文章导读:
    ▪手机读取大容量存储卡罗致手机反应速度变慢        手机读取大容量存储卡导致手机反应速度变慢 本文转载了别人的一个帖子: 现在市面上大容量存储卡(大于4G的)有两种,一种是普通卡(不带SDHC标志的,不带Class2、Class4、Class6标志的.........
    ▪ listView采取vprogressDIalog加载数据        listView采用vprogressDIalog加载数据   public class SoftwarePassionView extends ListActivity{        private ProgressDialog m_ProgressDialog = null;     private ArrayList<Order> m_orders = null;    private OrderAdapter m_adapter;.........
    ▪ 不同Activity其间的数据传递       不同Activity之间的数据传递              不同Activity之间的数据传递Bundle对象的实现范例说明在上一个范例里,介绍了如何在Activity中调用另一个Activity,但若需要在调用另外一个Activi.........

[1]手机读取大容量存储卡罗致手机反应速度变慢
    来源: 互联网  发布时间: 2014-02-18
手机读取大容量存储卡导致手机反应速度变慢
本文转载了别人的一个帖子:

现在市面上大容量存储卡(大于4G的)有两种,一种是普通卡(不带SDHC标志的,不带Class2、Class4、Class6标志的,一般容量小于8G),一种是SDHC的高速卡,包括8G、16G以及快要进入民用的32G卡。对于普通卡一般读取速度少于8M/S,用这样的卡在手机上必然因为硬件的天生原因导致手机变慢,而SDHC高速卡的读取速度能达到15M/S以上,不论是在电脑上还是在手机上都有上佳的表现。以我的N82为例,以前用原装2G卡时进入多媒体看照片常常会出现图片读取迟滞的现象(先出现一个白色的图标,然后才慢慢出现真正的图片),而换用8G高速卡后这一现象并未出现!图片放大缩小的编辑、以及手机电影的播放速度都有明显提升!用低速卡读取迟滞的原因就是低速卡本身读取速度限制了数据处理,进而导致N82比较强大的处理不能展示其真正效能,如同你用QX6700的CPU却用老掉牙的IDE硬盘的道理一样!!并且更重要的是,由于SDHC标准的先进之处,符合其规格的数据卡用电量反而比那些普通的小容量卡低!这一点对手机更重要!
       市面上能买得到的16G卡一般来说都是高速卡(低速卡做不到这么大了,技术限制),而N82本身带有SDHC控制器,理论上完全兼容16G高速卡的!只要在买卡的时候认准SDHC标志,或Class2、Class4、Class6标志(一个大“C”里面带有“2”“4”或“6”的标志)的,就可以放心使用!
       那些说什么会用大容量卡会变慢的机友是想当然的下结论了……

备注:
手机标配SDK Card大小为2G TF Card,读写速度为8.8M/S左右,4G以上 TF/SD 普通卡的读写速度一般小于7M/S,如果用户需要4G以上的存储卡,建议买带有SDHC(高速卡,读取速度在15M/S-20M/S之间)标志的存储卡,这样就不会使手机变慢。
      

    
[2] listView采取vprogressDIalog加载数据
    来源: 互联网  发布时间: 2014-02-18
listView采用vprogressDIalog加载数据



 

 public class SoftwarePassionView extends ListActivity{
   
    private ProgressDialog m_ProgressDialog = null;
    private ArrayList<Order> m_orders = null;
    private OrderAdapter m_adapter;
    private Runnable viewOrders;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        m_orders = new ArrayList<Order>();
        this.m_adapter = new OrderAdapter(this, R.layout.row, m_orders);
        setListAdapter(this.m_adapter);
       
        viewOrders = new Runnable(){
            @Override
            public void run() {
                getOrders();
            }
        };
        Thread thread =  new Thread(null, viewOrders, "MagentoBackground");
        thread.start();
        m_ProgressDialog = ProgressDialog.show(SoftwarePassionView.this,    
              "Please wait...", "Retrieving data ...", true);
    }
    private Runnable returnRes = new Runnable() {

        @Override
        public void run() {
            if(m_orders != null && m_orders.size() > 0){
                m_adapter.notifyDataSetChanged();
                for(int i=0;i<m_orders.size();i++)
                m_adapter.add(m_orders.get(i));
            }
            m_ProgressDialog.dismiss();
            m_adapter.notifyDataSetChanged();
        }
    };
    private void getOrders(){
          try{
              m_orders = new ArrayList<Order>();
              Order o1 = new Order();
              o1.setOrderName("SF services");
              o1.setOrderStatus("Pending");
              Order o2 = new Order();
              o2.setOrderName("SF Advertisement");
              o2.setOrderStatus("Completed");
              m_orders.add(o1);
              m_orders.add(o2);
              Thread.sleep(5000);
              Log.i("ARRAY", ""+ m_orders.size());
            } catch (Exception e) {
              Log.e("BACKGROUND_PROC", e.getMessage());
            }
            runOnUiThread(returnRes);
        }
    private class OrderAdapter extends ArrayAdapter<Order> {

        private ArrayList<Order> items;

        public OrderAdapter(Context context, int textViewResourceId, ArrayList<Order> items) {
                super(context, textViewResourceId, items);
                this.items = items;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                if (v == null) {
                    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    v = vi.inflate(R.layout.row, null);
                }
                Order o = items.get(position);
                if (o != null) {
                        TextView tt = (TextView) v.findViewById(R.id.toptext);
                        TextView bt = (TextView) v.findViewById(R.id.bottomtext);
                        if (tt != null) {
                              tt.setText("Name: "+o.getOrderName());                            }
                        if(bt != null){
                              bt.setText("Status: "+ o.getOrderStatus());
                        }
                }
                return v;
        }
}
}

 

2.row.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="6dip">
    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_marginRight="6dip"
        android:src="/blog_article/@drawable/icon/index.html" />
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="fill_parent">
        <TextView
            android:id="@+id/toptext"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
            android:gravity="center_vertical"
        />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1"
            android:id="@+id/bottomtext"
            android:singleLine="true"
            android:ellipsize="marquee"
        />
    </LinearLayout>
</LinearLayout>

3

string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, SoftwarePassionView!</string>
    <string name="app_name">Software Passion</string>
    <string name="main_no_items">No orders to display</string>
</resources>

4.main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<ListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />
<TextView
    android:id="@+id/android:empty"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/main_no_items"/>
</LinearLayout>

    
[3] 不同Activity其间的数据传递
    来源: 互联网  发布时间: 2014-02-18
不同Activity之间的数据传递
             不同Activity之间的数据传递

Bundle对象的实现

范例说明

在上一个范例里,介绍了如何在Activity中调用另一个Activity,但若需要在调用另外一个Activity的同时传递数据,那么就需要 利用android.os.Bundle对象封装数据的能力,将欲传递的数据或参数,通过Bundle来传递不同Intent之间的数据。

本范例的设计为一个简易表单的范例,在Activity1中收集User输入的数据,在离开Activity1的同时,将User选择的结果传递至下一个Activity2,以一个简单BMI"标准体重计算器"示范如何传递数据到下一个Activity里。

运行结果

 
(点击查看大图)图3-10  在两个Activity间做数据的传递
范例程序
src/irdc.ex03_10/EX03_10.java
在第一个Activity1主程序中,定义了"性别"选项的RadioGroup以及输入身高 的"EditText",并运用Intent及Bundle对象,在调用Activity2(EX03_10_1)时,同时将数据传入。关于 EditText对象的使用在此仅供参考,详细的应用以及属性方法,将会在未来讨论控件时,再详细解说。

package irdc.ex03_10;   /* import相关class */ import android.app.Activity;  import android.content.Intent;  import android.os.Bundle;  import android.view.View;  import android.widget.Button;  import android.widget.EditText;  import android.widget.RadioButton;   public class EX03_10 extends Activity   {    /** Called when the activity is first created. */   @Override   public void onCreate(Bundle savedInstanceState)     {      super.onCreate(savedInstanceState);      /* 载入main.xml Layout */     setContentView(R.layout.main);            /* 以findViewById()取得Button对象,并添加onClickListener */     Button b1 = (Button) findViewById(R.id.button1);      b1.setOnClickListener(new Button.OnClickListener()      {        public void onClick(View v)        {          /*取得输入的身高*/         EditText et = (EditText) findViewById(R.id.height);          double height=Double.parseDouble(et.getText().toString());          /*取得选择的性别*/         String sex="";          RadioButton rb1 = (RadioButton) findViewById(R.id.sex1);          if(rb1.isChecked())          {            sex="M";          }          else         {            sex="F";          }          /*new一个Intent对象,并指定class*/         Intent intent = new Intent();          intent.setClass(EX03_10.this,EX03_10_1.class);                    /*new一个Bundle对象,并将要传递的数据传入*/         Bundle bundle = new Bundle();          bundle.putDouble("height",height);          bundle.putString("sex",sex);                  /*将Bundle对象assign给Intent*/         intent.putExtras(bundle);                  /*调用Activity EX03_10_1*/         startActivity(intent);        }      });    }  }
src/irdc.ex03_10/EX03_10_1.java

那么,在Activity2(EX03_10_1)要如何接收来自Activity1(EX03_10)传递来的数据呢?试想,在 Activity1是以Bundle封装对象,自然在Activity2亦是以Bundle的方式解开封装的数据;程序中以 getIntent().getExtras() 方法取得随着Bundle对象传递过来的性别与身高,经过计算之后,显示在屏幕上。

package irdc.ex03_10;   /* import相关class */ import java.text.DecimalFormat;  import java.text.NumberFormat;  import android.app.Activity;  import android.os.Bundle;  import android.widget.TextView;   public class EX03_10_1 extends Activity   {    /** Called when the activity is first created. */   @Override   public void onCreate(Bundle savedInstanceState)    {      super.onCreate(savedInstanceState);      /* 加载main.xml Layout */     setContentView(R.layout.myalyout);            /* 取得Intent中的Bundle对象 */     Bundle bunde = this.getIntent().getExtras();            /* 取得Bundle对象中的数据 */     String sex = bunde.getString("sex");      double height = bunde.getDouble("height");            /* 判断性别 */     String sexText="";      if(sex.equals("M"))      {        sexText="男性";      }      else     {        sexText="女性";      }            /* 取得标准体重 */     String weight=this.getWeight(sex, height);            /* 设置输出文字 */     TextView tv1=(TextView) findViewById(R.id.text1);      tv1.setText("你是一位"+sexText+"\n你的身高是"                 +height+"厘米\n你的标准体重是"+weight+"公斤");    }        /* 四舍五入的method */   private String format(double num)    {      NumberFormat formatter = new DecimalFormat("0.00");      String s=formatter.format(num);      return s;    }     /* 以findViewById()取得Button对象,并添加onClickListener */      private String getWeight(String sex,double height)    {      String weight="";      if(sex.equals("M"))      {        weight=format((height-80)*0.7);      }      else     {        weight=format((height-70)*0.6);      }        return weight;    }  }
res/layout/mylayout.xml

mylayout.xml为(EX03_10_1)的Layout,定义了显示计算结果的TextView。

<?xml version="1.0" encoding="utf-8"?>  <AbsoluteLayout    android:layout_width="fill_parent"   android:layout_height="fill_parent"   xmlns:android="http://schemas.android.com/apk/res/android" >    <TextView      android:id="@+id/text1"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:textSize="20sp"     android:layout_x="50px"     android:layout_y="72px"   >    </TextView>  </AbsoluteLayout>
AndroidManifest.xml

由于本范例中有两个Activity,所以文件中必须有两个activity的声明,否则系统将无法运行,请看以下的描述。

<?xml version="1.0" encoding="utf-8"?>  <manifest    xmlns:android="http://schemas.android.com/apk/res/android"   package="irdc.ex03_10"   android:versionCode="1"   android:versionName="1.0.0">    <application      android:icon="@drawable/icon"       android:label="@string/app_name">      <activity        android:name=".EX03_10"       android:label="@string/app_name">        <intent-filter>          <action android:name="android.intent.action.MAIN" />          <category android:name="android.intent.category.LAUNCHER" />        </intent-filter>      </activity>      <activity android:name="EX03_10_1"></activity>    </application>  </manifest>
扩展学习

Bundle对象针对了不同的数据类型提供了许多的方法,例如,此范例中传递String类型的数据,使用的方法为Bundle.putString(stringName,stringValue):

bundle.putDouble("sex",sex);
而要传递Double类型的数据,使用的方法为Bundle.putDouble(doubleName,doubleValue),如下:

bundle.putString("height",height);
反之,若要由Bundle对象中取出数据,则使用Bundle.getString(stringName)、Bundle.getDouble(doubleName) 等相对应的方法即可。

除了上述简单的传递类型之外,尚有String[] 与ArrayList<String> 等封装的方式可供使用

参考。
来源:http://hi.baidu.com/lfcaolibin/blog/item/1e29f7546d7328cfb745aef5.html


    
最新技术文章:
▪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(请将#改为@)

操作系统 iis7站长之家