当前位置: 首页 > news >正文

网站的域名每年都要续费帮平台做推广怎么赚钱

网站的域名每年都要续费,帮平台做推广怎么赚钱,专业网站制作公司采用哪些技术制作网站?,JAVA网站开发小项目引言 在安卓开发的世界里,四大组件如同建筑的基石,支撑着整个安卓应用的架构。掌握这四大组件及其生命周期,是每个安卓开发者的必修课。本文将深入剖析安卓开发的四大组件:Activity、Service、BroadcastReceiver和ContentProvide…

引言

在安卓开发的世界里,四大组件如同建筑的基石,支撑着整个安卓应用的架构。掌握这四大组件及其生命周期,是每个安卓开发者的必修课。本文将深入剖析安卓开发的四大组件:Activity、Service、BroadcastReceiver和ContentProvider,并详细介绍它们的生命周期,帮助你全面掌握安卓开发的核心概念。

Activity:用户交互的门面

Activity是安卓应用中最基本也是最常见的组件,它为用户提供一个可视化的界面,用于实现与用户的交互。一个Activity通常就是一个单独的屏幕界面。

Activity的生命周期

Activity的生命周期由多个状态和回调方法组成,理解这些对于管理Activity的行为至关重要。

主要的生命周期方法包括:

  • onCreate():Activity首次创建时调用,用于初始化布局和变量。
  • onStart():Activity即将可见时调用。
  • onResume():Activity与用户开始交互时调用。
  • onPause():Activity部分被遮挡或失去焦点时调用。
  • onStop():Activity完全不可见时调用。
  • onDestroy():Activity即将被销毁时调用。
  • onRestart():Activity从停止状态重新启动时调用。

示例代码

下面是一个简单的Activity生命周期示例代码:

public class MainActivity extends AppCompatActivity {private static final String TAG = "MainActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d(TAG, "onCreate: Activity created");}@Overrideprotected void onStart() {super.onStart();Log.d(TAG, "onStart: Activity started");}@Overrideprotected void onResume() {super.onResume();Log.d(TAG, "onResume: Activity resumed");}@Overrideprotected void onPause() {super.onPause();Log.d(TAG, "onPause: Activity paused");}@Overrideprotected void onStop() {super.onStop();Log.d(TAG, "onStop: Activity stopped");}@Overrideprotected void onDestroy() {super.onDestroy();Log.d(TAG, "onDestroy: Activity destroyed");}@Overrideprotected void onRestart() {super.onRestart();Log.d(TAG, "onRestart: Activity restarted");}
}

生命周期场景

Activity的生命周期会根据不同的场景发生变化,例如:

  • 用户打开应用时,Activity经历onCreate() -> onStart() -> onResume()。
  • 用户按下Home键,Activity经历onPause() -> onStop()。
  • 用户返回应用,Activity经历onRestart() -> onStart() -> onResume()。
  • 当Activity被销毁时,经历onPause() -> onStop() -> onDestroy()。

Service:后台工作的执行者

Service是安卓应用中用于在后台执行长时间运行操作的组件,它没有用户界面。Service可以在后台处理网络请求、播放音乐、执行文件操作等任务。

Service的生命周期

Service有两种启动方式,因此有不同的生命周期路径:

1. 启动式Service(Started Service)
  • onCreate():Service首次创建时调用。
  • onStartCommand():每次启动Service时调用。
  • onDestroy():Service被销毁时调用。
2. 绑定式Service(Bound Service)
  • onCreate():Service首次创建时调用。
  • onBind():客户端绑定到Service时调用。
  • onUnbind():客户端解除绑定时调用。
  • onDestroy():Service被销毁时调用。

示例代码

下面是一个简单的启动式Service示例:

public class MyService extends Service {private static final String TAG = "MyService";@Overridepublic void onCreate() {super.onCreate();Log.d(TAG, "onCreate: Service created");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.d(TAG, "onStartCommand: Service started");// 执行后台任务new Thread(new Runnable() {@Overridepublic void run() {// 长时间运行的任务for (int i = 0; i < 10; i++) {Log.d(TAG, "run: Working..." + i);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}// 任务完成后停止服务stopSelf();}}).start();return START_STICKY;}@Overridepublic void onDestroy() {super.onDestroy();Log.d(TAG, "onDestroy: Service destroyed");}@Nullable@Overridepublic IBinder onBind(Intent intent) {return null; // 对于启动式Service,返回null}
}

Service的应用场景

  • 后台音乐播放
  • 后台数据同步
  • 处理网络请求

BroadcastReceiver:系统事件的监听者

BroadcastReceiver是安卓应用中用于接收系统或应用发出的广播消息的组件。广播是一种全局的消息传递机制,可以用于不同组件之间的通信。

BroadcastReceiver的生命周期

BroadcastReceiver的生命周期非常简单:

  • 当接收到广播时,系统会创建BroadcastReceiver实例并调用onReceive()方法。
  • onReceive()方法执行完毕后,BroadcastReceiver实例就会被销毁。

示例代码

下面是一个简单的BroadcastReceiver示例:

public class MyBroadcastReceiver extends BroadcastReceiver {private static final String TAG = "MyBroadcastReceiver";@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if (action != null && action.equals(Intent.ACTION_BATTERY_LOW)) {Log.d(TAG, "onReceive: Battery low!");Toast.makeText(context, "电池电量低!", Toast.LENGTH_SHORT).show();} else if (action != null && action.equals(Intent.ACTION_POWER_CONNECTED)) {Log.d(TAG, "onReceive: Power connected!");Toast.makeText(context, "电源已连接!", Toast.LENGTH_SHORT).show();}}
}

注册BroadcastReceiver

BroadcastReceiver可以通过两种方式注册:

  • 静态注册:在AndroidManifest.xml中注册,应用未启动时也能接收广播。
  • 动态注册:在代码中注册,需要在适当的时候取消注册。

动态注册示例

// 在Activity中动态注册BroadcastReceiver
public class MainActivity extends AppCompatActivity {private MyBroadcastReceiver receiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 创建BroadcastReceiver实例receiver = new MyBroadcastReceiver();// 创建IntentFilter并添加感兴趣的actionIntentFilter filter = new IntentFilter();filter.addAction(Intent.ACTION_POWER_CONNECTED);filter.addAction(Intent.ACTION_POWER_DISCONNECTED);// 注册BroadcastReceiverregisterReceiver(receiver, filter);}@Overrideprotected void onDestroy() {super.onDestroy();// 取消注册BroadcastReceiverunregisterReceiver(receiver);}
}

ContentProvider:数据共享的桥梁

ContentProvider是安卓应用中用于在不同应用之间共享数据的组件。它提供了一种统一的接口来访问和操作数据,可以是SQLite数据库、文件、网络等。

ContentProvider的生命周期

ContentProvider的生命周期由系统管理,通常在应用启动时创建,在应用终止时销毁。主要方法包括:

  • onCreate():ContentProvider创建时调用。
  • query():查询数据。
  • insert():插入数据。
  • update():更新数据。
  • delete():删除数据。
  • getType():返回数据类型。

示例代码

下面是一个简单的ContentProvider示例:

public class MyContentProvider extends ContentProvider {private static final String AUTHORITY = "com.example.myapp.provider";public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/items");private MyDatabaseHelper dbHelper;@Overridepublic boolean onCreate() {Context context = getContext();dbHelper = new MyDatabaseHelper(context);return true;}@Nullable@Overridepublic Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection,@Nullable String[] selectionArgs, @Nullable String sortOrder) {SQLiteDatabase db = dbHelper.getReadableDatabase();Cursor cursor = db.query("items", projection, selection, selectionArgs,null, null, sortOrder);cursor.setNotificationUri(getContext().getContentResolver(), uri);return cursor;}@Nullable@Overridepublic String getType(@NonNull Uri uri) {return "vnd.android.cursor.dir/vnd.example.items";}@Nullable@Overridepublic Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {SQLiteDatabase db = dbHelper.getWritableDatabase();long id = db.insert("items", null, values);getContext().getContentResolver().notifyChange(uri, null);return Uri.parse(CONTENT_URI + "/" + id);}@Overridepublic int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {SQLiteDatabase db = dbHelper.getWritableDatabase();int count = db.delete("items", selection, selectionArgs);getContext().getContentResolver().notifyChange(uri, null);return count;}@Overridepublic int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection,@Nullable String[] selectionArgs) {SQLiteDatabase db = dbHelper.getWritableDatabase();int count = db.update("items", values, selection, selectionArgs);getContext().getContentResolver().notifyChange(uri, null);return count;}
}

ContentProvider的应用场景

  • 在不同应用间共享数据
  • 访问系统提供的ContentProvider(如联系人、媒体库等)

四大组件的交互

安卓应用的强大之处在于四大组件之间可以相互协作。例如:

  • Activity可以启动Service执行后台任务。
  • Service可以通过BroadcastReceiver发送状态更新。
  • BroadcastReceiver可以启动Activity或Service。
  • ContentProvider可以为其他组件提供数据。

总结

安卓开发的四大组件是构建安卓应用的基础,每个组件都有其独特的功能和生命周期。掌握这些组件及其生命周期,能够帮助你开发出更加高效、稳定和用户友好的安卓应用。

在实际开发中,你需要根据应用的需求合理选择和使用这些组件,并理解它们之间的交互方式。希望本文能够帮助你深入理解安卓开发的核心概念,提升你的开发技能。

常见问题解答

  1. Activity和Service有什么区别?
    Activity是用于与用户交互的组件,而Service是用于在后台执行任务的组件,没有用户界面。

  2. BroadcastReceiver有什么作用?
    BroadcastReceiver用于接收系统或应用发出的广播消息,可以用于不同组件之间的通信。

  3. ContentProvider适用于什么场景?
    ContentProvider适用于在不同应用之间共享数据的场景,例如访问系统联系人、媒体库等。

  4. Service有哪两种启动方式?
    Service有启动式(Started Service)和绑定式(Bound Service)两种启动方式。

  5. Activity的生命周期中,哪些方法是必须实现的?
    Activity的生命周期中,onCreate()方法是必须实现的,其他方法可以根据需要选择性实现。

通过掌握这些基础知识,你将能够更加自信地开发安卓应用,处理各种复杂的开发场景。


文章转载自:
http://dinncolaughably.ydfr.cn
http://dinncoappreciation.ydfr.cn
http://dinncocontinue.ydfr.cn
http://dinncoketosis.ydfr.cn
http://dinncoearlap.ydfr.cn
http://dinncocarval.ydfr.cn
http://dinncoperhydrol.ydfr.cn
http://dinncosiphonostele.ydfr.cn
http://dinncorainy.ydfr.cn
http://dinncofti.ydfr.cn
http://dinncophotosensor.ydfr.cn
http://dinncoadjournal.ydfr.cn
http://dinncosubjective.ydfr.cn
http://dinncowitching.ydfr.cn
http://dinncomystic.ydfr.cn
http://dinncocber.ydfr.cn
http://dinncooscule.ydfr.cn
http://dinncocaseous.ydfr.cn
http://dinncobytecode.ydfr.cn
http://dinncodls.ydfr.cn
http://dinncoinburst.ydfr.cn
http://dinncoabirritate.ydfr.cn
http://dinncocordis.ydfr.cn
http://dinncoplanosol.ydfr.cn
http://dinncocommunitarian.ydfr.cn
http://dinncopushful.ydfr.cn
http://dinncoconjugal.ydfr.cn
http://dinncochita.ydfr.cn
http://dinncozincotype.ydfr.cn
http://dinncointitle.ydfr.cn
http://dinncozoophagous.ydfr.cn
http://dinncorabbinate.ydfr.cn
http://dinncostealthily.ydfr.cn
http://dinncomainliner.ydfr.cn
http://dinncodisimpassioned.ydfr.cn
http://dinncofremd.ydfr.cn
http://dinncoeap.ydfr.cn
http://dinncopalustral.ydfr.cn
http://dinncodustcloak.ydfr.cn
http://dinncodemented.ydfr.cn
http://dinncointerregnum.ydfr.cn
http://dinncoscripsit.ydfr.cn
http://dinncoloner.ydfr.cn
http://dinncodisedge.ydfr.cn
http://dinncocoronetted.ydfr.cn
http://dinncomercurize.ydfr.cn
http://dinncowolfling.ydfr.cn
http://dinncomissable.ydfr.cn
http://dinncoapple.ydfr.cn
http://dinncotacit.ydfr.cn
http://dinncodaisy.ydfr.cn
http://dinncodivisive.ydfr.cn
http://dinncoanbury.ydfr.cn
http://dinncosubchaser.ydfr.cn
http://dinnconoordholland.ydfr.cn
http://dinncovii.ydfr.cn
http://dinncohelices.ydfr.cn
http://dinnconineteen.ydfr.cn
http://dinncoregardant.ydfr.cn
http://dinncoliturgic.ydfr.cn
http://dinncoinoculability.ydfr.cn
http://dinncobrevet.ydfr.cn
http://dinncoquadricentennial.ydfr.cn
http://dinncoepistemically.ydfr.cn
http://dinncodecomposition.ydfr.cn
http://dinncostratovolcano.ydfr.cn
http://dinncohypopharynx.ydfr.cn
http://dinncotgwu.ydfr.cn
http://dinncodaybook.ydfr.cn
http://dinncocleromancy.ydfr.cn
http://dinncocoastwaiter.ydfr.cn
http://dinncoscapple.ydfr.cn
http://dinncounreconciled.ydfr.cn
http://dinncobiocybernetics.ydfr.cn
http://dinnconorbert.ydfr.cn
http://dinncoconcur.ydfr.cn
http://dinncoindustrialized.ydfr.cn
http://dinncoanisocercal.ydfr.cn
http://dinncodite.ydfr.cn
http://dinncocounterconditioning.ydfr.cn
http://dinncocatchweight.ydfr.cn
http://dinncocollaborate.ydfr.cn
http://dinncohoma.ydfr.cn
http://dinncoearthbags.ydfr.cn
http://dinncojaded.ydfr.cn
http://dinncoeupneic.ydfr.cn
http://dinncogait.ydfr.cn
http://dinncopeon.ydfr.cn
http://dinncoglorious.ydfr.cn
http://dinncoheredes.ydfr.cn
http://dinncoripsnorting.ydfr.cn
http://dinncoirrupt.ydfr.cn
http://dinncomarasmoid.ydfr.cn
http://dinncosuperdense.ydfr.cn
http://dinncoprofitable.ydfr.cn
http://dinncospongy.ydfr.cn
http://dinncoplasticene.ydfr.cn
http://dinncoupsoar.ydfr.cn
http://dinncopoison.ydfr.cn
http://dinncoloxodromy.ydfr.cn
http://www.dinnco.com/news/130692.html

相关文章:

  • 企业做网站大概需要多少钱口碑营销的前提及好处有哪些?
  • 人大家网站建设惠州企业网站seo
  • 可以跟关键词密度过高的网站交换友情链接吗成都私人网站制作
  • 做网站做推广有效果吗网络推广方式有哪几种
  • 网站单页别人是怎么做的昆明关键词优化
  • 个人网站建设方案书模板宁波专业seo服务
  • 形象墙在线设计网站百度下载安装免费下载
  • java工程师证书在哪考白山seo
  • 金华网站推广公司建网站流程
  • 重庆有哪些做网站 小程序的网站优化网络推广seo
  • 政府网站建设报价单软文营销经典案例
  • 做网站每月收入搜索引擎广告
  • 威海做网站公司中文域名注册管理中心
  • 中国十大原画培训机构湖南百度seo
  • 济南中桥信息做的小语种网站怎么样什么是整合营销并举例说明
  • 服务好的网站制作放心网站推广优化咨询
  • 做外贸网站魔贝课凡seo
  • 沈阳做网站最好的公司有哪些网站域名ip地址查询
  • 漂亮的手机网站模板备案域名查询
  • 网站建设的分工游戏交易平台
  • 网站主题风格广州网站优化推广
  • 做k12网站郑州网站建设公司
  • 做公司网站要什么资料新出的app推广在哪找
  • 怎样用mysql做网站博客是哪个软件
  • 中国建设银行网站首页 定投中国站长之家
  • 做微信公众号网站成品网站源码
  • 做怎么网站今天国际新闻
  • 温州网站建设怎么样营销策划书案例
  • 宜宾做网站的公司镇江关键字优化公司
  • 东莞做网站排名今晚比分足球预测