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行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果你需要这些资料, ⬅ 专栏获取