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

wordpress如何去除底部沈阳seo公司

wordpress如何去除底部,沈阳seo公司,wordpress 搜索无效,品牌策划设计文章目录 1.service2.startService3.bindService4.区别 1.service 在Android开发中,Service 是一个可以在后台长时间运行的组件,用于执行耗时操作或执行那些不需要与用户界面直接交互的任务。Service 不依赖于用户界面,即使用户切换到其他应…

文章目录

      • 1.service
      • 2.startService
      • 3.bindService
      • 4.区别

1.service

在Android开发中,Service 是一个可以在后台长时间运行的组件,用于执行耗时操作或执行那些不需要与用户界面直接交互的任务。Service 不依赖于用户界面,即使用户切换到其他应用,Service 仍然可以继续运行。

Service 的主要用途

  • 后台任务:执行耗时操作,如下载文件、播放音乐等。
  • 跨进程通信:通过 AIDL 实现跨进程通信(IPC)。
  • 定时任务:定期执行某些任务,如定时同步数据。
  • 保持连接:维持与服务器的长连接,如实时聊天应用。

Service生命周期

在这里插入图片描述

  • onCreate():当 Service 第一次被创建时调用。
  • onStartCommand(Intent intent, int flags, int startId):每当通过 startService() 方法启动 Service 时调用。
  • onBind(Intent intent):每当通过 bindService() 方法绑定到 Service 时调用。
  • onUnbind(Intent intent):当所有客户端都解除绑定时调用。
  • onDestroy():当 Service 被销毁时调用。

2.startService

循环打印日志Service:

public class MyService extends Service {private static final String TAG = "ning";private ExecutorService executorService;@Overridepublic void onCreate() {super.onCreate();Log.d(TAG, "MyService onCreate");// 创建一个单线程的ExecutorServiceexecutorService = Executors.newSingleThreadExecutor();}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {Log.d(TAG, "MyService onStartCommand");// 提交一个任务到线程池,周期性地打印日志executorService.submit(() -> {while (true) {Log.d(TAG, "MyService logging at " + System.currentTimeMillis());try {Thread.sleep(1000); // 每秒打印一次日志} catch (InterruptedException e) {e.printStackTrace();}}});return START_STICKY; // 服务被系统杀死后自动重启}@Overridepublic void onDestroy() {super.onDestroy();Log.d(TAG, "MyService onDestroy");// 关闭线程池if (executorService != null) {executorService.shutdownNow();}}@Nullable@Overridepublic IBinder onBind(Intent intent) {Log.d(TAG, "MyService onBind");return null;}
}

在这里插入图片描述

3.bindService

public class ServiceBindActivity extends AppCompatActivity {private Button btn_bind;private Button btn_cancel;private Button btn_status;private static final String TAG = "ning";private MyBindService myBindService;private boolean isBound = false;private ServiceConnection connection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {Log.d(TAG, "onServiceConnected");MyBindService.LocalBinder binder = (MyBindService.LocalBinder) service;myBindService = binder.getService();isBound = true;// 调用 Service 的方法myBindService.doSomething();}@Overridepublic void onServiceDisconnected(ComponentName name) {Log.d(TAG, "onServiceDisconnected");isBound = false;}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_service_bind);btn_bind = findViewById(R.id.btn_bind);btn_cancel = findViewById(R.id.btn_cancel);btn_status = findViewById(R.id.btn_status);Intent intent = new Intent(this, MyBindService.class);btn_bind.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 绑定 ServicebindService(intent, connection, Context.BIND_AUTO_CREATE);}});btn_cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 解绑 ServiceunbindService(connection);}});btn_status.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 获取 Service 状态Log.d(TAG, "Service status: " + (myBindService == null ? "null" : "not null"));}});}@Overrideprotected void onDestroy() {super.onDestroy();// 解绑 Serviceif (isBound) {unbindService(connection);isBound = false;}}
}
public class MyBindService extends Service {private static final String TAG = "ning";private final IBinder binder = new LocalBinder();public class LocalBinder extends Binder {MyBindService getService() {return MyBindService.this;}}@Overridepublic void onCreate() {super.onCreate();Log.d(TAG, "MyBoundService onCreate");}@Overridepublic IBinder onBind(Intent intent) {Log.d(TAG, "MyBoundService onBind");return binder;}@Overridepublic boolean onUnbind(Intent intent) {Log.d(TAG, "MyBoundService onUnbind");return super.onUnbind(intent);}@Overridepublic void onDestroy() {super.onDestroy();Log.d(TAG, "MyBoundService onDestroy");}public void doSomething() {Log.d(TAG, "MyBoundService doSomething called");}
}

4.区别

在 Android 中,startServicebindService 都是用来启动和管理 Service 的方法,但它们的使用场景和行为有所不同。下面是它们的主要区别和使用场景:

startService

功能

  • 启动型 Service:通过 startService 方法启动的 Service 是启动型 Service,主要用于执行一次性的后台任务,如下载文件、上传数据等。
  • 生命周期Service 会一直运行,直到它自己调用 stopSelf 方法或者外部调用 stopService 方法将其停止。
  • 回调方法:主要使用 onStartCommand 方法来处理启动请求。

使用场景

  • 后台任务:执行耗时操作,如下载文件、上传数据、处理大量数据等。
  • 定时任务:定期执行某些任务,如定时同步数据。
  • 无需与 Service 交互:不需要与 Service 进行持续的通信,只需要启动 Service 并让它完成任务。

示例代码

// 启动 Service
Intent intent = new Intent(this, MyStartedService.class);
startService(intent);// 停止 Service
stopService(intent);

bindService

功能

  • 绑定型 Service:通过 bindService 方法启动的 Service 是绑定型 Service,主要用于组件之间的交互,如 ActivityService 之间的数据交换。
  • 生命周期Service 会一直运行,直到所有绑定的客户端都解除绑定。当最后一个客户端解除绑定时,Service 会调用 onUnbind 方法,并最终调用 onDestroy 方法。
  • 回调方法:主要使用 onBind 方法来返回一个 IBinder 对象,用于客户端与 Service 之间的通信。

使用场景

  • 持续交互:需要与 Service 进行持续的通信,如播放音乐、实时数据更新等。
  • 跨进程通信:通过 AIDL 实现跨进程通信。
  • 资源共享:多个组件共享同一个 Service 的资源。

示例代码

// 定义 ServiceConnection
private ServiceConnection connection = new ServiceConnection() {@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {Log.d("TAG", "onServiceConnected");LocalBinder binder = (LocalBinder) service;myBoundService = binder.getService();isBound = true;// 调用 Service 的方法myBoundService.doSomething();}@Overridepublic void onServiceDisconnected(ComponentName name) {Log.d("TAG", "onServiceDisconnected");isBound = false;}
};// 绑定 Service
Intent intent = new Intent(this, MyBoundService.class);
bindService(intent, connection, Context.BIND_AUTO_CREATE);// 解绑 Service
if (isBound) {unbindService(connection);isBound = false;
}

总结

  • startService

    • 用于启动一次性的后台任务。
    • Service 会一直运行,直到显式停止。
    • 主要使用 onStartCommand 方法处理任务。
    • 适用于不需要与 Service 进行持续通信的场景。
  • bindService

    • 用于组件之间的持续交互。
    • Service 的生命周期与绑定的客户端相关,当所有客户端解除绑定时,Service 会停止。
    • 主要使用 onBind 方法返回 IBinder 对象进行通信。
    • 适用于需要与 Service 进行持续通信的场景。
http://www.15wanjia.com/news/191187.html

相关文章:

  • 外贸型网站的特点杭州市建设银行网站
  • 兰州市建设工程招标投标中心网站进入不wordpress
  • 官方网站建设 磐石网络知名网站建设后台管理实训报告
  • 旅游商城网站建设如何进行公司网站的建设
  • 网店推广方案范文东营企业网站排名优化
  • 诚讯通网站做网站的一年能挣多少钱
  • 全影网的网站哪儿做dwordpress 新浪图片
  • 韩国大型门户网站电子商城网站建设项目规划书
  • 装修设计培训机构sem和seo是什么职位
  • 宁波网站制作好公司网站开发过程记录册
  • 网站建设 收费标准织梦网站突然打开很慢
  • 网站备案审核通过后大型网站空间费用
  • 医院网站建设方案关于网站的建设
  • 个人备案的网站可以卖东西么装修大全
  • 网站备案人什么意思浙江和海建设集团网站
  • 佛山网站建设78788网站标签设计
  • 邵东做网站的公司网站开发工程师是什么内容
  • 佛山新网站建设详细内容工业和信息化部投诉电话
  • 第一百四十七章 做视频网站专业做传奇网站解析
  • 万户网络网站管理系统山东最新消息今天
  • 收录快的门户网站网站建设需求书模板
  • 厦门模板网站2023年最新时政热点
  • 在线平面设计网站哪个好肥西县建设官方局网站
  • 网站 二级域名打广告的平台
  • 郑州建设网站费用泰安达创信息科技有限公司
  • 网站建设功能报价百度收录网站定位地址
  • 太原网站定制外链seo服务
  • python编程网站做网站的费用记哪个科目
  • 专业网站制作哪家强河北邢台重大新闻
  • 下载网站如何做wordpress anew