Android~Service+BroadcastReceiver使用

import android.app.Service;

import android.content.Intent;

import android.os.Binder;

import android.os.IBinder;

public class ContentService extends Service {

@Override

public IBinder onBind(Intent arg0) {

// TODO Auto-generated method stub

return new LocalBinder();

}

@Override

public void onCreate() {

// TODO Auto-generated method stub

super.onCreate();

}

public final class LocalBinder extends Binder {

public ContentService getService() {

return ContentService.this;

}

}

public void asyncSendPerson(final String name) {

// 休息5秒,模拟异步任务

new Thread(new Runnable() {

@Override

public void run() {

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

//可以在子线程中直接发送广播

sendContentBroadcast(name);

}

}).start();

}

/**

  • 发送广播

  • @param name

*/

protected void sendContentBroadcast(String name) {

// TODO Auto-generated method stub

Intent intent=new Intent();

intent.setAction(“com.example.servicecallback.content”);

intent.putExtra(“name”, name);

sendBroadcast(intent);

}

}

  • MainActivity.java

package com.example.servicecallback;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.content.ServiceConnection;

import android.os.Bundle;

import android.os.IBinder;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.TextView;

public class MainActivity extends Activity {

private MyServiceConn conn;

private TextView mContent;

private ContentReceiver mReceiver;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

conn = new MyServiceConn();

bindService(new Intent(this, ContentService.class), conn,

BIND_AUTO_CREATE);

mContent = (TextView) findViewById(R.id.content);

this.findViewById(R.id.button1).setOnClickListener(

new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

startActivity(new Intent(MainActivity.this,

OtherActivity.class));

}

});

doRegisterReceiver();

}

/**

  • 注册广播接收者

*/

private void doRegisterReceiver() {

mReceiver=new ContentReceiver();

IntentFilter filter = new IntentFilter(

“com.example.servicecallback.content”);

registerReceiver(mReceiver, filter);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

public class MyServiceConn implements
ServiceConnection {

@Override

public void onServiceConnected(ComponentName name, IBinder binder) {

// service = ((LocalBinder) binder).getService();

}

@Override

public void onServiceDisconnected(ComponentName name) {

// TODO Auto-generated method stub

// service = null;

}

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

unbindService(conn);

if (mReceiver!=null) {

unregisterReceiver(mReceiver);

}

}

public class ContentReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String name = intent.getStringExtra(“name”);

Person person = new Person();

person.setName(name);

mContent.setText(person.toString());

}

}

}

  • OtherActivity.java

package com.example.servicecallback;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.ComponentName;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.content.ServiceConnection;

import android.os.Bundle;

import android.os.IBinder;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import com.example.servicecallback.ContentService.LocalBinder;

public class OtherActivity extends Activity {

private ContentService service;

private TextView mContent;

private Button mSubmit;

private EditText mEditText;

private ServiceConnection conn;

private ContentReceiver mReceiver;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.other);

mEditText = (EditText) findViewById(R.id.edittext);

mSubmit = (Button) findViewById(R.id.button1);

mContent = (TextView) findViewById(R.id.content);

mSubmit.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

String name = mEditText.getText().toString();

service.asyncSendPerson(name);

}

});

conn=new MyServiceConn();

bindService(new Intent(OtherActivity.this, ContentService.class), conn,

BIND_AUTO_CREATE);

doRegisterReceiver();

}

private void doRegisterReceiver() {

mReceiver=new ContentReceiver();

IntentFilter filter = new IntentFilter(

最后

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

如果你需要这些资料, ⬅ 专栏获取
无助**。

因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

[外链图片转存中…(img-SQfsfnIw-1719172023554)]

[外链图片转存中…(img-Nl1T4Qjs-1719172023554)]

[外链图片转存中…(img-u2xlhTny-1719172023555)]

[外链图片转存中…(img-jbw1vC37-1719172023555)]

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

如果你需要这些资料, ⬅ 专栏获取

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值