天天看点

各种细的知识点(一)

Windows是抽象类

requestWindowFeature(Window.FEATURE_NO_TITLE);
           

GridView的一些特殊属性:kɒləm

<pre name="code" class="java"><pre name="code" class="java">fresco	英[fresk]

ImageView.ScaleType.FIT_XY|android:scaleType="fitXY" 把图片按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满View.[skeɪl
           

1.android:numColumns=”auto_fit” //GridView的列数设置为自动2.android:columnWidth=”90dp " //每列的宽度,也就是Item的宽度 3.android:stretchMode=”columnWidth" //缩放与列宽大小同步4.android:verticalSpacing=”10dp” //两行之间的边距5.android:horizontalSpacing=”10dp” //两列之间的边距

设置字体显示的样式

android:textStyle="normal"  字体显示样式   斜体粗体正常
android:background="@null" 按钮无背景  设置按钮的高度
           

把EditText的Ime Options属性设置成不同的值,Enter键上可以显示不同的文字或图案。  这里一定要注意一下(特别强大  用户体验好)

Android二维码扫描功能的集成开发: 功能:扫描二维码功能、生成二维码的功能

AndFix是一个Android App的在线热补丁框架。使用此框架,我们能够在不重复发版的情况下,在线修改App中的Bug。AndFix就是 “Android Hot-Fix”的缩写。

就目前来说,AndFix支持Android 2.3到6.0版本,并且支持arm与X86系统架构的设备。完美支持Dalvik与ART的Runtime。

AndFix 的补丁文件是以 .apatch结尾的文件。

AndFix是阿里巴巴开源项目。

patch管理类 [pætʃ] 补丁   PatchManager mPatchManager = new PatchManager(this);

this.getLocalClassName()  第一次见这个方法

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //主要是获取的当前activity的名字  第一次见这个方法
        String localClassName = this.getLocalClassName();
        //MainActivity
        Toast.makeText(this, localClassName, Toast.LENGTH_SHORT).show();
        Log.i(TAG, localClassName);
    }
           
package com.example.tuhuadmin.testactivity;

import android.app.Activity;
import android.app.Application;

import java.util.LinkedList;
import java.util.List;

/**
 * Created by Tuhuadmin on 2016/7/15.
 */

public class BaseApplication extends Application {

    //用于管理所有的activity
    private List<Activity> activityList = new LinkedList<Activity>();

    public static BaseApplication baseApplication;

    @Override
    public void onCreate() {
        super.onCreate();
    }

    public static BaseApplication getInstance() {
        if (baseApplication == null) {
            baseApplication = new BaseApplication();
        }
        return baseApplication;
    }

    // 返回装activity的集合
    public List<Activity> getActivityList() {
        return activityList;
    }

    // 添加Activity到容器中
    public void addActivity(Activity activity) {
        activityList.add(activity);
    }

    // 移除当前的activity
    public void removeActivity(Activity activity) {
        activityList.remove(activity);
    }

    // 遍历所有Activity并finish   在首页面退出activity使用的
    public void exit() {
        for (Activity activity : activityList) {
            activity.finish();
        }
        System.exit(0);
    }
}
           
private void initViews() {
        findViewById(R.id.tv_start).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //启动服务
                Intent intent = new Intent(MainActivity.this, PhotoListenerService.class);
                startService(intent);
            }
        });
    }
           
package com.example.tuhuadmin.photostatelistener.service;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;

/**
 * Created on 2016/7/21.
 * Author:crs
 * Description:XXX
 */
public class PhotoListenerService extends Service {
    private static final String TAG = "PhotoListenerService";
    private TelephonyManager tm;
    private MyPhoneStateListener listener;

    //服务启动后,一定会走onCreate方法,可以通过打日志看到;
    @Override
    public void onCreate() {
        //在这里监听电话的呼叫状态
        tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        listener = new MyPhoneStateListener();
        tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
    }

    private class MyPhoneStateListener extends PhoneStateListener {
        //重写其中的方法,呼叫状态改变
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);
            switch (state) {
                case TelephonyManager.CALL_STATE_IDLE: {
                    //闲置状态
                    Log.i(TAG, "闲置");
                }
                break;
                case TelephonyManager.CALL_STATE_OFFHOOK: {
                    //挂断电话
                    Log.i(TAG, "挂断");
                }
                break;
                case TelephonyManager.CALL_STATE_RINGING: {
                    //响铃
                    Log.i(TAG, "响铃");
                }
                break;
            }
        }
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        //在服务销毁的时候取消监听
        tm.listen(listener, PhoneStateListener.LISTEN_NONE);
    }
}
           

EditText属性:

android:cursorVisible="false" 隐藏光标

android:cursorVisible="true" 隐藏光标

当前EditText不能获取焦点,等价于EditText对象的clearFocus();

android:focusable="false"

android:focusableInTouchMode="false"

focusableInTouchMode.这个属性的意思,就是在进入触摸输入模式后,该控件是否还有获得焦点的能力.

compile 的方式和放在libs目录下面理论上是没有区别的,除非你做特殊的优化否则会整个Jar包或者@aar库都塞进去,所以一般在引用第三方库的时候,要特别注意他的大小和方法数.

jar包与aar包文件的区别

两者区别:

*.jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。

*.aar:包含所有资源,class以及res资源文件全部包含

如果你只是一个简单的类库那么使用生成的*.jar文件即可;如果你的是一个UI库,包含一些自己写的控件布局文件以及字体等资源文件那么就只能使用*.aar文件。

进程优先级

当系统的内存不足时, android系统将根据进程优先级选择杀死一些不太重要的进程.

友盟用户反馈SDK帮助开发者和用户进行直接的沟通和交流。

阿里巴巴无线开放平台——阿里百川(http://baichuan.taobao.com)

overridePendingTransition(ANIMATION_LEFT_IN, ANIMATION_LEFT_OUT);  页面跳转动画

Settings->Editor->Color & Fonts->Console Font  输出面板字体大小

接收的是否是系统广播,怎么判断?

只能通过action判断,并且代码中没有明确的广播发送者。

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);

网络连接状况是一个系统发出的广播,应用程序运行时就会发出; 注意广播发出的时机。

各种细的知识点(一)
各种细的知识点(一)

程序员也要了解业务!

曾经碰到过这个问题

各种细的知识点(一)

VT-X也就是CPU虚拟化技术,可以在BIOS里开启:

  1. 开机按DEL,进入BIOS;
  2. BIOS中依次选择:Advanced(高级)——CPU Configuration——Secure Virtual Machine,设置为:Enabled(启用)就行了

dao : data access object  数据访问对象   网络请求数据层

private String AddressID="";
//获取传递过来的值  对成员变量赋值
public void setAddressID(String addressID) {
	AddressID = addressID;
}
           

如果选择的是线下工作模式?有时候就会下载不了依赖,导致程序报错!

settings--->build--->gradle  里面有设置的! 千万别勾选!

哪些类中使用了当前的类 快捷键 ? 

在当前类名上按住ctrl+鼠标左键点击。

ctrl+H 查看类的继承关系图。 alt+7 当前页面的大纲视图。 ctrl+f;  双击shift键。

1)UmShareUtil.share()  友盟分享工具类  把所有的分享逻辑都传递到这个方法中;存在大量的方法重载.

把所有传递过来的信息封装到ShareInfo对象里面;  ShareInfo shareInfo = new ShareInfo();  信息对象,添加set方法

创建一个分享对话框,并把ShareInfo对象传递进去;new UMShareDialog.Builder(activity).setShareInfo(shareInfo).create()

2)写一个自定义的dialog友盟分享对话框.

自定义里面显示的布局和样式;  dialog.setContentView(layout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));

设置分享渠道的点击事件

3)在UmShareManager页面中处理每个渠道的分享逻辑.

设置分享参数,进行分享.  所有的分享逻辑都是在UmShareManager中完成的

Intent在传递数据时是有大小限制的,这里官方并未详细说明,不过通过实验的方法可以测出数据应该被限制在1MB之内(1024KB),笔者采用的是传递Bitmap的方法,发现当图片大小超过1024(准确地说是1020左右)的时候,程序就会出现闪退、停止运行等异常(不同的手机反应不同),因此可以判断Intent的传输容量在1MB之内。

LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View rootView = LayoutInflater.from(mActivity).inflate(R.layout.dialog_customized_share, null);

各种细的知识点(一)

如何下载源码?  如何在android studio中下载源码?

不是在 Android SDK 里面,而是在SDK Manager里面下载源码的。

源码放在sdk下的哪个文件夹下?\sdk\sources

Activity在我们Framework层是如何启动的?

与Activity相关的Framework层类的介绍

Activity类与其他自定义类的区别是什么?

Activity的生命周期方法是什么时候被回调的?

Activity是如何被打开的?(startActiviy()的内部原理是什么?)

Activity栈是如何交互的?

能够助我们了解activity内部的机制,Framework层是如何管理acttivity的生命周期的?

ActivityThread

汽车轮胎

充气轮胎、轮胎胎面花纹、零压轮胎、轮毂直径

如轮胎无速度标识,除非另有说明,一般认为最大安全速度为120KM/H.

胎面磨耗

减少频繁制动和避免紧急制动,否则造成轮胎与地面之间的滑动摩擦,致使胎面严重磨损。

充气要注意安全。要随时用气压表检查气压,以免因充气过多,使轮胎爆破。

千斤顶:千斤顶应放置在平坦的地面上,切忌支点不稳。将车身顶至轮胎离地即可。

要选择路面行驶,躲避锋利的石头、玻璃、金属等可能扎破和划伤轮胎的物体,躲避化学遗洒物质对轮胎的粘附,腐蚀。行驶在拱度较大的路面时,要尽量居中行驶,减少一侧轮胎负荷增大而使轮胎磨损不均。

提高车辆行驶速度,特别是经常处于快速行驶时,轮胎的使用寿命显著降低。

炎热天气行车,由于外界气温较高,轮胎积热散发困难,由于行车速度快、运距长,道路条件恶劣等原因,胎温急剧上升,胎内气压也随之增加,从而加速橡胶老化,降低帘线与橡胶的粘合力,致使帘布层脱空或爆破损坏,故炎热天气行车应注意控制轮胎的使用温度。

除了自燃 ,夏日高温也很容易造成汽车爆胎。

在交通事故档案中 ,记录着不少由于车轮打滑造成的重大和特大交通事故。

操控性和抓地力。

轮胎都是橡胶做的。

轮胎年限到期: 轮胎的使用年限通常在5年左右,超过这个年限,轮胎就会开始老化。轮胎老化的主要表现就是表面硬化,继而出现龟裂纹。老化的轮胎会失去应有的弹性,继续使用的话会导致胎面变形,存在爆胎风险。

继续阅读