前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊Activity那些事

聊聊Activity那些事

作者头像
猴哥yuri
发布2018-08-16 15:20:01
4240
发布2018-08-16 15:20:01
举报
文章被收录于专栏:极客猴

Activity身为四大组件之一,在整个App中扮演着向用户呈现界面的角色。在平常的开发中,我们会自定义一个类去继承Activity去实现界面。而Activity还有本身之外,还有FragmentAtivity、以及AppCompatActivity,你知道这几个Activity的区别吗?让我一一道来

各Activity所在的包
  • Activity: android.app.Activity
  • FragmentAtivity: android.support.v4.app.FragmentActivity
  • AppCompatActivity: android.support.v7.app.AppCompatActivity
各Activity的底层实现
  • Activity ↳ ContextThemeWrapper ↳ ContextWrapper ↳ Context
  • FragmentAtivity ↳ BaseFragmentActivityHoneycomb ↳ BaseFragmentActivityDonut ↳ Activity
  • AppCompatActivity ↳ FragmentAtivity

从上面得知AppCompatActivityFragmentAtivity子类,而FragmentAtivity又是Activity子类

各Activity的作用
  • AppCompatActivity: 能够让运行在API Level 7或者以上版本且继承AppCompatActivity的Activity,使用ActionBar以及设置Theme_AppCompatTheme.AppCompat这两主题。
  • FragmentAtivity: 如果想使用android.support.v4.app.Fragmentandroid.support.v4.content.Loader这两个API,那么就需要继承该类。同时它还提供getSupportFragmentManager()getSupportLoaderManager()这两个方法供我们使用。
  • Activity: 我们经常使用的系统API,其定义是在Context类中,具体如下:
代码语言:javascript
复制
 public abstract AssetManager getAssets();


public abstract Resources getResources();


public abstract PackageManager getPackageManager();


public abstract ContentResolver getContentResolver();


public abstract Context getApplicationContext();


public final CharSequence getText(@StringRes int resId) 

{

    return getResources().getText(resId);

}


public final String getString(@StringRes int resId) 

{

    return getResources().getString(resId);

}


public final int getColor(int id) 

{

    return getResources().getColor(id, getTheme());

}


public final Drawable getDrawable(int id) 

{

    return getResources().getDrawable(id, getTheme());

}


public abstract String getPackageName();


public abstract File getSharedPrefsFile(String name);


public abstract SharedPreferences getSharedPreferences(String name,

        int mode);


public abstract void startActivity(Intent intent);



public void startActivityForResult(

        @NonNull String who, Intent intent, int requestCode, @Nullable Bundle options) 

{

    throw new RuntimeException("This method is only implemented for Activity-based Contexts. "

            + "Check canStartActivityForResult() before calling.");

}


public abstract void sendBroadcast(Intent intent);


public abstract Intent registerReceiver(@Nullable BroadcastReceiver receiver, IntentFilter filter);


public abstract void unregisterReceiver(BroadcastReceiver receiver);


public abstract ComponentName startService(Intent service);


public abstract boolean stopService(Intent service);


public abstract boolean bindService(Intent service, @NonNull ServiceConnection conn, @BindServiceFlags int flags);


public abstract void unbindService(@NonNull ServiceConnection conn);


public abstract Object getSystemService(@ServiceName @NonNull String name);
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客猴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 各Activity所在的包
  • 各Activity的底层实现
  • 各Activity的作用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档