zoukankan      html  css  js  c++  java
  • 以相声之名说android四大对象

    当里个当,当里个当,Android此系统,易用有好用。谁为其奉献,只靠四巨头。

    当里个当,当里个当,老大唤activity,界面缔造者。清水出芙蓉,天然来雕饰。

    当里个当,当里个当,你若明白他,周期咋整呀。这个看代码,重点看方法。

    当里个当,当里个当,这里的方法,名字怪怪的。都叫on方法,唤作将一把。

    当里个当,当里个当,首先是oncreate,数据初始化。控件实例化,还是要靠他。

    当里个当,当里个当,其后在onstar,开启新intent。随后来onresume,停止由唤起。

    当里个当,当里个当,以上的代码,程序顶呱呱。其他的方法,究竟是个啥。

    当里个当,当里个当,竟跟者onpause,activity退出了。线程不见了,pause作祟了。

    当里个当,当里个当,ac不见了,只因这onstop。从此此进程,再也不见了。

    当里个当,当里个当,程序全退掉,destory不可少。步骤要铭记,程序就无比。

    当里个当,当里个当,老二service,名叫“王进喜”(劳模)。出师未捷身先死,长使英雄泪满襟。

    当里个当,当里个当,要问其原理,继续来研究。怎么来开启,我们查书籍。

    当里个当,当里个当,资料查到了,两种的方法。一种startservice,自身就开启。

    当里个当,当里个当,另种bind了,需要绑定者。service优先级,本身大问题。

    当里个当,当里个当,service优先第,系统要搞死。要问其周期,activity一模子。

    当里个当,当里个当,其他都说过,onbind需说明。“此人”一骑兵,绑定一对象,返回一接口,进程间通讯,此子不可少。

    当里个当,当里个当,一二说完了,接下是老三。老三叫cp(Content Provider).内容提供者。好比图书馆,资料存于此。

    当里个当,当里个当,万卷书存此,任由你翻起。对于此类型,(会用)你看行不行。URI方法,android好参数。

    当里个当,当里个当,熟能能生巧,请看此例子。对于源代码,如下便所示:

    public class DBlite extends SQLiteOpenHelper {
            public DBlite(Context context) {
                    super(context, RuiXin.DBNAME, null, RuiXin.VERSION);
                    // TODO Auto-generated constructor stub
            }
            @Override
            public void onCreate(SQLiteDatabase db) {
                    // TODO Auto-generated method stub
                            db.execSQL("create table "+RuiXin.TNAME+"(" +
                                    RuiXin.TID+" integer primary key autoincrement not null,"+
                                    RuiXin.EMAIL+" text not null," +
                                    RuiXin.USERNAME+" text not null," +
                                    RuiXin.DATE+" interger not null,"+
                                    RuiXin.SEX+" text not null);");
            }
            @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                    // TODO Auto-generated method stub
            }
            public void add(String email,String username,String date,String sex){
                    SQLiteDatabase db = getWritableDatabase();
                    ContentValues values = new ContentValues();
                    values.put(RuiXin.EMAIL, email);
                    values.put(RuiXin.USERNAME, username);
                    values.put(RuiXin.DATE, date);
                    values.put(RuiXin.SEX, sex);
                    db.insert(RuiXin.TNAME,"",values);
            }
    }

    首先提供元数据,

    public class MyProvider extends ContentProvider{
     
            DBlite dBlite;
            SQLiteDatabase db;
             
            private static final UriMatcher sMatcher;
            static{
                    sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
                    sMatcher.addURI(RuiXin.AUTOHORITY,RuiXin.TNAME, RuiXin.ITEM);
                    sMatcher.addURI(RuiXin.AUTOHORITY, RuiXin.TNAME+"/#", RuiXin.ITEM_ID);
     
            }
            @Override
            public int delete(Uri uri, String selection, String[] selectionArgs) {
                    // TODO Auto-generated method stub
                    db = dBlite.getWritableDatabase();
                    int count = 0;
                    switch (sMatcher.match(uri)) {
                    case RuiXin.ITEM:
                            count = db.delete(RuiXin.TNAME,selection, selectionArgs);
                            break;
                    case RuiXin.ITEM_ID:
                            String id = uri.getPathSegments().get(1);
                            count = db.delete(RuiXin.TID, RuiXin.TID+"="+id+(!TextUtils.isEmpty(RuiXin.TID="?")?"AND("+selection+')':""), selectionArgs);
                        break;
                    default:
                            throw new IllegalArgumentException("Unknown URI"+uri);
                    }
                    getContext().getContentResolver().notifyChange(uri, null);
                    return count;
            }
     
            @Override
            public String getType(Uri uri) {
                    // TODO Auto-generated method stub
                    switch (sMatcher.match(uri)) {
                    case RuiXin.ITEM:
                            return RuiXin.CONTENT_TYPE;
                    case RuiXin.ITEM_ID:
                        return RuiXin.CONTENT_ITEM_TYPE;
                    default:
                            throw new IllegalArgumentException("Unknown URI"+uri);
                    }
            }
     
            @Override
            public Uri insert(Uri uri, ContentValues values) {
                    // TODO Auto-generated method stub
                     
                    db = dBlite.getWritableDatabase();
                    long rowId;
                    if(sMatcher.match(uri)!=RuiXin.ITEM){
                            throw new IllegalArgumentException("Unknown URI"+uri);
                    }
                    rowId = db.insert(RuiXin.TNAME,RuiXin.TID,values);
                       if(rowId>0){
                               Uri noteUri=ContentUris.withAppendedId(RuiXin.CONTENT_URI, rowId);
                               getContext().getContentResolver().notifyChange(noteUri, null);
                               return noteUri;
                       }
                       throw new IllegalArgumentException("Unknown URI"+uri);
            }
     
            @Override
            public boolean onCreate() {
                    // TODO Auto-generated method stub
                    this.dBlite = new DBlite(this.getContext());
    //                db = dBlite.getWritableDatabase();
    //                return (db == null)?false:true;
                    return true;
            }
     
            @Override
            public Cursor query(Uri uri, String[] projection, String selection,
                            String[] selectionArgs, String sortOrder) {
                    // TODO Auto-generated method stub
                    db = dBlite.getWritableDatabase();                
                    Cursor c;
                    Log.d("-------", String.valueOf(sMatcher.match(uri)));
                    switch (sMatcher.match(uri)) {
                    case RuiXin.ITEM:
                            c = db.query(RuiXin.TNAME, projection, selection, selectionArgs, null, null, null);
                     
                            break;
                    case RuiXin.ITEM_ID:
                            String id = uri.getPathSegments().get(1);
                            c = db.query(RuiXin.TNAME, projection, RuiXin.TID+"="+id+(!TextUtils.isEmpty(selection)?"AND("+selection+')':""),selectionArgs, null, null, sortOrder);
                        break;
                    default:
                            Log.d("!!!!!!", "Unknown URI"+uri);
                            throw new IllegalArgumentException("Unknown URI"+uri);
                    }
                    c.setNotificationUri(getContext().getContentResolver(), uri);
                    return c;
            }
            @Override
            public int update(Uri uri, ContentValues values, String selection,
                            String[] selectionArgs) {
                    // TODO Auto-generated method stub
                    return 0;
            }
    }

    接下来封装。

    当里个当,当里个当,由此便看见,cp能封装,程序安全性,大大没问题。

    当里个当,当里个当,一三说完了,接下四老弟。BR(BroadcastReciver)登场了,名唤接收者。

    当里个当,当里个当。好比一灯塔,照亮能前行。程序多广播,此者全都接着。见图如下示:

    看他的原理,运行很简单,看图见下方:

    次子有脾气,十秒不见息(消息),便会耍脾气(报错)。

    对于四对象,鄙人仅知此。你若要深入,恳请来探究。

  • 相关阅读:
    rip协议
    IP地址的计算以及子网掩码的计算
    jQuery知识点
    JavaScript 语言编程学习路线
    JS中AJAX知识
    .以及JDK1.5ConcurrentHashMap新特性
    Java程序执行顺序
    观察者设计模式
    Servlet中Filter的学习
    JDBC和连接池知识点
  • 原文地址:https://www.cnblogs.com/manuosex/p/3621663.html
Copyright © 2011-2022 走看看