目录
Monday
1.内容观察者
2.广播1
Tuesday
1.广播2
2.服务
MainActivity:
package cn.rjxy.myobserver;
import androidx.appcompat.app.AppCompatActivity;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uri uri = Uri.parse("content://cn.rjxy.providertest/info");
getContentResolver().registerContentObserver(uri, true, new TestObserver(new Handler()));
}
private class TestObserver extends ContentObserver{
public TestObserver(Handler handler){
super(handler);
Log.d("***", "TestObserver is created");
}
public void onChange(boolean changed){
super.onChange(changed);
Log.d("***", "数据发生变化");
}
}
public void onDestroy(){
super.onDestroy();
getContentResolver().unregisterContentObserver(new TestObserver(new Handler()));
}
}
MainActivity:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private TestReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
receiver = new TestReceiver();//实例化
IntentFilter filter = new IntentFilter("Hello, android.");
filter.setPriority(100);
registerReceiver(receiver, filter);
}
protected void onDestroy(){
super.onDestroy();
unregisterReceiver(receiver);
//unregisterReceiver(reciever2);
}
public void click(View view){
Intent intent = new Intent("Hello, android.");
//sendBroadcast(intent);
sendOrderedBroadcast(intent, null);
intent.setAction("Hello, world.");
//sendBroadcast(intent);
sendOrderedBroadcast(intent, null);
}
}
TestReceiver:
package com.example.myapplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class TestReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent){
Log.d("***", "接收到信息的广播");
Log.d("***", intent.getAction());
}
}
新加一个java文件,SecondReceiver
package com.example.myapplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class SecondReciever extends BroadcastReceiver {
public void onReceive(Context context, Intent intent){
Log.d("###", "接收到信息的广播");
Log.d("###", intent.getAction());
// abortBroadcast();
// Log.d("###","终止广播");
}
}
值越大 优先级越高
MainActivity:
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View view){
switch (view.getId()){
case R.id.start:
Intent intent = new Intent(MainActivity.this, MyService.class);
startService(intent);
break;
case R.id.close:
Intent intent1 = new Intent(MainActivity.this, MyService.class);
stopService(intent1);
break;
}
}
}
MyService:
package com.example.myapplication;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
public class MyService extends Service {
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onCreate(){
super.onCreate();
Log.d("***", "oncreate");
}
public void onDestroy(){
super.onDestroy();
Log.d("***", "onDestroy");
}
public int onStartCommand(Intent intent, int flag, int startId){
Log.d("***", "onStartCommand");
return super.onStartCommand(intent, flag, startId);
}
}