android 笔记

#关系
ViewGroup 是从view继承的
Layout 是ViewGroup 继承的,布局可以添加元素
片段里可以存放布局
Activity 可以移除 Fragment,增加片段,通过 getFragmentManager 来管理 Fragment 通过findFragmentById来获得
Fragment的元素修改通过 getView() 取得layout 之后修改里面的元素
如果 Layout 还没有实例化,通过 LayoutInflater 来操作通过inflate方法可以找到layout文件夹下的布局并实例化
Context 上下文 常用之类为Service Activity Application 等
Activity显示组件都在widget包下

#视图注意
android 的视图都非线程安全的,所以在子线程操作视图,会触发异常
处理方法,在子线程中调用 Handler 把数据发送给主线程,在主线程上做更新操作
包括 Timer 更新视图都不可以的,必须回到主线程才能更新视图

#线程间数据发送
android 中的线程间消息可以通过 Handler 来传送
Handler handler = new Handler(){   
    public void handleMessage(Message msg) {  
        super.handleMessage(msg);  
    }
};
#往制定线程发送消息

#发送消息
handler.sendMessage(message);

##广播
#(全局监听)
<receiver android:name="com.example.a.br_s">
    <intent-filter>
        <action android:name="hi" />
    </intent-filter>
</receiver>
-----------------------------------------------------------
public class br_s extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();  
        if(action.equals("hi")){  
            //
        }
    }
}
#(程序监听)
IntentFilter myIntentFilter = new IntentFilter();
myIntentFilter.addAction("hi");
registerReceiver(mBroadcastReceiver, myIntentFilter);
-----------------------------------------------------------
BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        //
    }
};
#派发广播
Intent mIntent = new Intent("hi");
sendBroadcast(mIntent);

#服务
public class LocalService extends Service {
    private static final String TAG = "LocalService";
    private IBinder binder=new LocalService.LocalBinder();
    @Override
    public IBinder onBind(Intent intent) {    
        return binder;
    }
    MediaPlayer mediaPlayer=null;
    @Override
    public void onCreate() {
            Log.i(TAG, "onCreate");
            super.onCreate();
    }
    @Override
    public void onStart(Intent intent, int startId) {
            Log.i(TAG, "onStart");
            super.onStart(intent, startId);
    }
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
          Log.i(TAG, "onStartCommand");
        return START_STICKY;
    }
    @Override
    public void onDestroy() {
            Log.i(TAG, "onDestroy");
            super.onDestroy();
    }
    //定义内容类继承Binder
    public class LocalBinder extends Binder{
        LocalService getService(){
            return LocalService.this;
        }
    }    
}
#启动服务
private void startCustomService(){
         Intent intent=new Intent(this,LocalService.class);
         startService(intent);
}
#绑定服务
LocalService localService=null;
private void BinderService(){
    Intent intent=new Intent(this,LocalService.class);
    bindService(intent, new ServiceConnection(){
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder binder) {
            //调用bindService方法启动服务时候,如果服务需要与activity交互,
            //则通过onBind方法返回IBinder并返回当前本地服务
            localService=((LocalService.LocalBinder)binder).getService();
            //这里可以提示用户,或者调用服务的某些方法
        }
        @Override
        public void onServiceDisconnected(ComponentName componentName) {
            localService=null;
            //这里可以提示用户
        }     
    }, Context.BIND_AUTO_CREATE);
}

android 笔记

时间: 2024-10-29 19:09:54

android 笔记的相关文章

Android笔记之 开机自启动

在项目中用到开机自动运行功能,因此学习了下,在此作为笔记记录下. 主要是以下4个步骤: 1.原理了解: 通过搜查资料发现,当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED,因此我们只需要在自己的应用中接收这个广播,然后启动APP即可. 2.编写接收器 既然是接收广播,必然是要用广播接收器,因此新建一个继承自广播BroadcastReceiver的类来专门接收上

android笔记1——开发环境的搭建

Long Long ago...已经成为了历史,我还是要说出一个真相:早年前,那时候,android还不被大众所认知的时候,当然开发者也没不像现在那样趋于饱和状态.一位大牛前辈,也是我的学长,那时候我还在上大学.前辈告诫我有时间得去看看android开发,那时候的自己,年轻.冲动.不畏惧,毅然地选择了java服务端开发,放弃了学习android开发. 时隔数年的今天,因为公司业务项目的发展,我还是得去做android开发工作...虽然这几年间断断续续的看了些android开发,但是将成为历史的今

Android笔记之日期选择器

1.主代码 /** * 日期选择器 */ private DatePickerDialog datePickerDialog; /** * 年 */ private int mYear=1993; /** * 月 */ private int mMonth=12-1; /** * 日 */ private int mDay=16; ......................... //构造函数包括mYear, mMonth, mDay用来显示初始日期,同时设置监听 datePickerDial

Android笔记之标题栏的各种操作

1.改变标题栏的背景颜色 this.setTitleColor(textColor); 2.为页面设置返回键 ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); ... @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch (ite

Android笔记之 Web Service 基础

一.Web Service是什么? 就是网络服务,根据W3C的定义,WebServices(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包含.自描述和模块化的应用程序,它可以在网络中被描述.发布和调用,可以将它看作是基于网络的.分布式的模块化组件.  Web Services是建立在通用协议的基础之上的,包括HTTP.SOAP.UDDI.WSDL等.其中Web Service三要素就是SOAP.WSDL和UDDI. SOAP用来描述传递信息的格式, WSDL用来描述如何访

Android笔记 之 旋转木马的音乐效果

一.前言-- 大家一定在百度音乐上在线听过歌,有没有注意到那个旋转唱片-- 就上面那个,当音乐在播放的时候,那个光碟轮子在转,就想旋转木马一般.感觉好好玩啊. 碰巧想起前阵子做音乐播放器,哎,那这个也可以做在手机的音乐播放器上,这样就代替了进度条了. 一想到,就兴奋,于是,首先画圆形,然后放置背景图片,然后使用动画旋转.当音乐播放时,同时 开始播放圆形图片的动画,当音乐暂停时,暂停旋转:当音乐停止播放时,就停止动画,图片回到原点. 二.效果-- 三.源码-- (1)MainActivity <s

Android笔记:获取url或uri字符串中的参数值

d Uri.parse(mArgUrl).getQueryParameter("id") Android笔记:获取url或uri字符串中的参数值

Android笔记:SurfaceView与SurfaceHolder对象

摘要 调试Media播放时,不时用到SurfaceView与SurfaceHolder对象,写case测试及实际运行效果, 基本上搞清楚这两个对象的用法及区别 1.SurfaceView public class SurfaceView extends View SurfaceView是视图(View)的继承类, 这个视图里内嵌了一个专门用于绘制 调试Media播放时,不时用到SurfaceView与SurfaceHolder对象,写case测试及实际运行效果, 基本上搞清楚这两个对象的用法及区

Android 笔记之错误记录

前言--好记性不如烂笔头,记录Android学习过程中遇到的各种问题BUG.O(∩_∩)O 错误1 -- Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0 错误原因--一般是int 型数据赋给String ,然后让TextView显示就会出现如上错误. 解决办法--用String.valueOf 或者在int数据后加"" 错误2-- 在布局文件中,文本的设置使用如下写法

Android笔记:利用InputStream和BufferedReader 进行字节流 字符流处理

通过socket获取字节流处理时最初使用的是BufferedReader和PrintWriter  这种方式在解析字符串时是比较方便的 但是在处理字节时不够方便最终还是回归到InputStream和OutputStream方式 不使用缓存直接使用字节流操作,一次传输的字节数据在300字节以内,目前没有测试差距会有多大. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException;