Android Training相关笔记

1.xml里的命名:只要是类型不同,名字就可以相同。

2.@后面的“+”:第一次创建这个id的时候,需要用到,因此自己定义的id都是需要加“+”。

3.使用“weight”的时候,width要设定成“0”,这样会提高layout的效率

4.Intent携带数据时,“key”的名字最好是当前类的包名为前缀,且定义为“public final static”。

5.Activity的生命周期相关

   (1)在onCreate()中创建了后台运行的线程,则在onDestroy()方法中,必须要销毁,否则可能会发生内存泄露。

   (2)一般情况下,在调用onDestroy()的方法时,onPause()和onStop()必会调用,但是当在onCreate()方法中调用 了finish()方法的话,则是直接调用onDestroy(),不会调用其他的方法。

   (3)不要在onPause()方法里做耗CPU的操作,否则会减慢跳到下个页面的速度,可以放到onStop()里做。

   (4)停止动画以及希望被自动保存的东西(eg.编辑的草稿邮件)才会放到onPause()里来做。

6.屏幕密度相关

  xhdpi:2.0    hdpi:1.5    mdpi: 1.0(baseline)    ldpi:0.75

7.隐式跳转来调用其他应用

   (1)打电话:

      Uri number = Uri.parse("tel:5551234");
    Intent callIntent = new Intent(Intent.ACTION_DIAL, number); 

   (2)调地图:

      Uri location = Uri.parse("geo:37.422219,-122.08364?z=14"); // z 是缩放比例
    Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);

   (3)调本地浏览器:

     Uri webpage = Uri.parse("http://www.android.com");
    Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
   (4)添加本地日历事件:
    Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);
   Calendar time = Calendar.getInstance();
   time.set(2016, 0, 19, 7, 30);
   calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, time.getTimeInMillis());
   time.set(2016, 0, 19, 10, 30);
   calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, time.getTimeInMillis());
   calendarIntent.putExtra(Events.TITLE, "Ninja class");
   calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo");

   (5)调用本地联系人

    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
    pickContactIntent.setType(Phone.CONTENT_TYPE);

如果当前要调用的app,手机中不一定存在,则在start之前最好加上

        Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
        PackageManager packageManager = getPackageManager();
        List<ResolveInfo> activities = packageManager.queryIntentActivities(callIntent, 0);

        boolean isIntentSafe = activities.size() > 0;
        if (isIntentSafe)

           startActivity(callIntent);

如果当前有多个能响应这个跳转的app,则显示选择界面

※不加的话:标题不可改,下面有默认选择的按钮

    加的话:标题可改,下面没有默认的选择按钮

  Intent chooser = Intent.createChooser(intent, title);
  startActivity(chooser);

8.如果在intent-filter中定义了多个data

 eg.<data android:mimeType="image/*"/>
    <data android:mimeType="text/plain"/>
则在接受数据时的判断
    Intent intent = getIntent();
    if (intent.getType().indexOf("image/") != -1) {
        // Handle intents with image data ...
    } else if (intent.getType().equals("text/plain")) {
        // Handle intents with text ...
    }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值