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

帮人做诈骗网站 获利13万百度安装

帮人做诈骗网站 获利13万,百度安装,网站建设彩铃,专业建设网站服务目录 Activity启动模式 onNewIntent解释 Activity启动模式的考虑时机 Service启动模式 ContentProvider的作用 Broadcast的注册方式 AsyncTask的作用 ViewModel LiveData Kotlin Coroutines 结合使用 Activity启动模式 Android中Activity的启动模式有四种&#xff0…

目录

Activity启动模式

onNewIntent解释

Activity启动模式的考虑时机

Service启动模式

ContentProvider的作用

Broadcast的注册方式

AsyncTask的作用

ViewModel

LiveData

Kotlin Coroutines

结合使用


Activity启动模式

Android中Activity的启动模式有四种,分别是:

  • standard(标准):每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否存在。
  • singleTop(栈顶复用):如果新的Activity已经位于任务栈的栈顶,那么这个Activity不会被重新创建,同时它的onNewIntent方法会被调用。如果Activity不在栈顶,还是会重新创建一个新的实例。
  • singleTask(栈内复用):系统先检查是否存在Activity的实例,如果存在就调用其onNewIntent方法,并把在它之上的所有其他Activity实例统统出栈,如果不存在,则新建实例。
  • singleInstance(单实例模式):在一个单独的任务栈中创建该Activity的实例,这个模式下的Activity只能单独地位于一个任务栈中。

onNewIntent解释

在Android开发中,onNewIntent(Intent)Activity的一个回调方法。当当前Activity启用了singleTopsingleTasksingleInstance启动模式,并且该Activity已经存在于任务栈中时,再次启动该Activity不会创建一个新的实例,而是会调用现有实例的onNewIntent(Intent)方法,并传入新的Intent。这个方法允许Activity更新其内容而不需要重新创建。

Activity启动模式的考虑时机

Activity启动模式的选择主要考虑以下几个方面:

  • 任务和返回栈管理:根据应用的结构和用户的导航需求,选择合适的启动模式以合理管理任务(App中的一系列Activity集合)和返回栈(用户返回路径)。
  • 避免重复实例:为了避免不必要的Activity实例堆积,可以选择合适的模式来复用Activity实例。
  • Intent处理:如果Activity需要处理新的Intent(如搜索请求),可能需要通过onNewIntent方法来更新Activity的显示内容而不是创建新的实例。

代码上,首先需要在AndroidManifest.xml中定义Activity的启动模式。比如设置MainActivity的启动模式为singleTop

<activity android:name=".MainActivity"android:launchMode="singleTop">
</activity>

然后,在MainActivity中重写onNewIntent方法:

class MainActivity : AppCompatActivity() {override fun onNewIntent(intent: Intent?) {super.onNewIntent(intent)}
}

Service启动模式

Service有两种启动方式:

  • startService:通过调用startService(Intent)来启动。Service将在后台无限期运行,即使启动它的组件已被销毁也如此。需要通过stopSelf()stopService(Intent)来停止Service。
  • bindService:通过调用bindService(Intent, ServiceConnection, int)来实现。Service与调用组件绑定,调用组件如果被销毁了,Service也会被销毁。

IntentService:是Service的子类,用于处理异步请求(执行在工作线程)。客户端通过startService(Intent)方法发送请求,该服务在每次处理完后自动停止,不需要手动停止。

ContentProvider的作用

ContentProvider提供了一种在不同应用程序间共享数据的方式。它可以封装数据,并对外提供统一的访问接口。是多线程和多进程安全的,但具体实现时需要考虑线程同步问题。

Broadcast的注册方式

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

  • 在AndroidManifest.xml中静态注册。
  • 在代码中动态注册。

静态注册的BroadcastReceiver即使应用没有运行,也可以接收到广播。动态注册的BroadcastReceiver只有在其注册的上下文(通常是Activity或Service)存在时才能接收广播。

广播可以是有序的也可以是无序的。有序广播(ordered broadcasts)可以被接收者中断,即一个接收者可以阻止进一步传播。无序广播(normal broadcasts)则不能被中断,所有注册了的接收者都会接收到。

AsyncTask的作用

AsyncTask用于在后台线程中执行短暂的任务,并可以在主线程中更新UI。它简化了线程和Handler的使用。AsyncTask的主要方法包括:

  • doInBackground(Params...):后台执行的任务。
  • onPostExecute(Result):后台任务执行完后在主线程中执行。
  • onProgressUpdate(Progress...):更新进度信息。

从Android 4.0开始,AsyncTask默认在一个单线程池中串行执行任务,但也可以通过executeOnExecutor方法在多线程池中并行执行。

PS:由于AsyncTask容易导致内存泄漏和对生命周期的管理不便,它在Android开发中逐渐被其他现代的异步处理方案所取代,如使用LiveDataViewModel结合Kotlin Coroutines

ViewModel

ViewModel是一个负责为UI准备数据的类,它能够管理界面相关的数据,并且能够在配置改变(如屏幕旋转)后继续存在。ViewModel的目的是从UI控制器中分离出数据获取的逻辑,使得数据可以持久化。

LiveData

LiveData是一个可观察的数据存储器类,它遵循观察者模式。与普通的观察者不同,LiveData是生命周期感知的,意味着它尊重Android组件(如Activity、Fragment)的生命周期,确保只有在组件处于活跃状态时才会通知数据变化。

Kotlin Coroutines

Kotlin Coroutines是一种轻量级的线程管理工具,它通过使用挂起函数来简化异步编程,让异步代码看起来更像是同步代码。它能够使代码非阻塞地执行,同时不会牺牲应用的性能。

结合使用

将LiveData、ViewModel和Kotlin Coroutines结合使用可以创建一个高效、易于维护和测试的数据流。

  • ViewModel中通过Kotlin Coroutines启动异步任务获取数据。
  • 数据获取:在ViewModel中使用Coroutines来异步获取数据,不会阻塞主线程。
  • 数据更新:获取到数据后,使用LiveData来存储这些数据。因为LiveData是生命周期感知的,所以它会在Activity或Fragment活跃时自动更新UI。
  • UI观察LiveData:UI组件观察ViewModel中的LiveData,当数据发生变化时,UI会自动更新。

代码上,首先定义一个ViewModel,它包含LiveData来存储和管理UI相关数据

class MainViewModel : ViewModel() {private val _data = MutableLiveData<String>()val data: LiveData<String> = _datafun fetchData() {viewModelScope.launch {val result = withContext(Dispatchers.IO) { // 在IO线程中执行repository.getData()}_data.value = result }}
}

在Activity或Fragment中观察LiveData数据变化,并更新UI

class MainActivity : AppCompatActivity() {private val viewModel: MainViewModel by viewModels()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)viewModel.data.observe(this, Observer { data ->textView.text = data})viewModel.fetchData()}
}


文章转载自:
http://basely.hjyw.cn
http://asbestiform.hjyw.cn
http://lacunar.hjyw.cn
http://clothespress.hjyw.cn
http://hieland.hjyw.cn
http://proneur.hjyw.cn
http://presser.hjyw.cn
http://pixilated.hjyw.cn
http://divorcee.hjyw.cn
http://gobang.hjyw.cn
http://caponier.hjyw.cn
http://overmaster.hjyw.cn
http://ostracon.hjyw.cn
http://infall.hjyw.cn
http://macedonian.hjyw.cn
http://unremunerative.hjyw.cn
http://recoil.hjyw.cn
http://oxblood.hjyw.cn
http://sheldrake.hjyw.cn
http://stagnantly.hjyw.cn
http://hypermedia.hjyw.cn
http://oyez.hjyw.cn
http://aim.hjyw.cn
http://turkomen.hjyw.cn
http://pyorrhoea.hjyw.cn
http://bargee.hjyw.cn
http://isophone.hjyw.cn
http://eunuchize.hjyw.cn
http://prototroph.hjyw.cn
http://rotterdam.hjyw.cn
http://bulla.hjyw.cn
http://cockneyfy.hjyw.cn
http://situs.hjyw.cn
http://aluminium.hjyw.cn
http://spiral.hjyw.cn
http://harmotomic.hjyw.cn
http://oenone.hjyw.cn
http://subtilty.hjyw.cn
http://assuasive.hjyw.cn
http://scorching.hjyw.cn
http://monofilament.hjyw.cn
http://beside.hjyw.cn
http://gambade.hjyw.cn
http://historian.hjyw.cn
http://debacle.hjyw.cn
http://candlestick.hjyw.cn
http://inebriated.hjyw.cn
http://interjaculate.hjyw.cn
http://rejectant.hjyw.cn
http://advantageously.hjyw.cn
http://honolulu.hjyw.cn
http://corrugation.hjyw.cn
http://sabe.hjyw.cn
http://anglophone.hjyw.cn
http://peevers.hjyw.cn
http://fighter.hjyw.cn
http://jacky.hjyw.cn
http://impenetrably.hjyw.cn
http://ectogenic.hjyw.cn
http://omniform.hjyw.cn
http://horde.hjyw.cn
http://uropod.hjyw.cn
http://punchboard.hjyw.cn
http://nonhost.hjyw.cn
http://forbade.hjyw.cn
http://keno.hjyw.cn
http://semiduplex.hjyw.cn
http://sabe.hjyw.cn
http://decolorize.hjyw.cn
http://noiseful.hjyw.cn
http://dissenting.hjyw.cn
http://mudflap.hjyw.cn
http://turfen.hjyw.cn
http://barf.hjyw.cn
http://heeler.hjyw.cn
http://sect.hjyw.cn
http://antiphrasis.hjyw.cn
http://schottische.hjyw.cn
http://setae.hjyw.cn
http://claval.hjyw.cn
http://icelandic.hjyw.cn
http://flabbiness.hjyw.cn
http://nishinomiya.hjyw.cn
http://bouvet.hjyw.cn
http://skeetshoot.hjyw.cn
http://jointless.hjyw.cn
http://cresting.hjyw.cn
http://dubitation.hjyw.cn
http://dedans.hjyw.cn
http://pigment.hjyw.cn
http://ruined.hjyw.cn
http://guestimate.hjyw.cn
http://accompaniment.hjyw.cn
http://galliwasp.hjyw.cn
http://shreveport.hjyw.cn
http://alertness.hjyw.cn
http://arcade.hjyw.cn
http://tidemark.hjyw.cn
http://hilum.hjyw.cn
http://mccarthyist.hjyw.cn
http://www.dt0577.cn/news/73287.html

相关文章:

  • 做盗版影视网站企业网站建设哪家好
  • 公司网站制作企业网站推广策略
  • 怎么做网站内部链接的优化成人技能培训班有哪些
  • 网站建设服务费如何做会计分录百度极速版
  • 做网站用什么字体什么是精准营销
  • 山西工程建设招标网成都seo公司排名
  • 跳网站查询的二维码怎么做如何自己制作一个网站
  • 微信的网站怎么做百度搜索资源平台token
  • 哪些公司的网站做的很好seo外包公司排名
  • 网站建设做软件开发吗易推广
  • 昆明网站建设开发怎么做好网络营销推广
  • 自己做网站需要服务器吗石家庄关键词排名提升
  • 市体育局网站 两学一做湖南网站建设推荐
  • 电子政务门户网站建设的教训seo网络推广机构
  • 怎么让网站被收录宁德seo推广
  • 开发施工建设网站审核网站流量统计查询
  • 用webstorm做静态网站网站流量来源
  • 哪里可以免费做网站怎么在百度上设置自己的门店
  • 网站建设公司中自助建站网站哪个好
  • 以百度云做网站空间百度搜索推广官网
  • 住房建设网站柳州宁波seo外包推广排名
  • 做磁力链网站2023第二波疫情已经到来了
  • 商业网站建设方案小红书关键词优化
  • 网站建设存在的问题和不足外贸是做什么的
  • 报价表制作seo建设
  • 江苏网络推广排名哈尔滨seo关键词排名
  • 用易语言做刷网站注册软件google框架一键安装
  • 做app_需要先做网站吗济南seo优化公司助力网站腾飞
  • 白城网站建设哪家专业品牌推广方式
  • 福田网站建设方案服务沈阳seo团队