聊聊Activity那些事

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类中,具体如下:
 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);

原文发布于微信公众号 - 极客猴(Geek_monkey)

原文发表时间:2016-11-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android开发指南

5.AutoCompleteTextView、自定义广播

30060
来自专栏Android开发指南

8.搜索

22850
来自专栏Android中高级开发

Android开发之漫漫长途 XV——RecyclerView

该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索...

19220
来自专栏上善若水

010android初级篇之Activity的返回值

使用startActivity方式启动的Activity和它的父Activity无关,当它关闭时也不会提供任何反馈。 但是使用startActivityFor...

19440
来自专栏向治洪

仿qq最新侧滑菜单

为了后续对这个项目进行优化,比如透明度动画、背景图的位移动画,以及性能上的优化。 我把这个项目上传到github上面,请大家随时关注。 github地址 htt...

52590
来自专栏Android开发经验

常用的代码片段,不断更新

14920
来自专栏Android开发指南

6.下拉刷新

31040
来自专栏积累沉淀

多人聊天室

最近学完网络线程协议 ,因此写了一个用java编写的聊天室 话不多说 效果如图 ? 首先 创建服务器端 package com.yc.server...

75680
来自专栏函数式编程语言及工具

Akka(31): Http:High-Level-Api,Route rejection handling

   Route 是Akka-http routing DSL的核心部分,使用户能比较方便的从http-server的角度筛选http-request、进行se...

25970
来自专栏向治洪

android电话拦截

其实大家可以下载 xxx卫士看下,它设置来电拒接模式后,都是会启动设置MMI指令的界面。然后再去“设置->通话设置->来电转接”,看看 “占线时转接” 设置好的...

54990

扫码关注云+社区

领取腾讯云代金券