上一篇博客传送门:Android常见问题总结(一)
<receiver android:name=".StaticReceiver"> <intent-filter> <action android:name="XXX" /> </intent-filter> </receiver>
IntentFilter filter = new IntentFilter(); filter.addAction("XXX"); DynamicReceiver receiver = new DynamicReceiver(); registerReceiver(receiver, filter); // 不使用后记得取消注册 unregisterReceiver(receiver);动态广播的好处在于:程序适应系统变化做操作,但在程序运行状态才能接收到
Intent intent = new Intent(); // 方法一:传入上下文参数与class参数 intent.setComponent(new ComponentName(context, XXX.class)); // 方法二:传入包名与类名 intent.setComponent(new ComponentName(pkg, cls));
Intent intent = new Intent(); // 设置一个字符串代表Action intent.setAction(action); // 添加一个字符串代表category intent.addCategory(category1); intent.addCategory(category2);
Intent intent = new Intent(); // 设置Data属性 intent.setData(new Uri()); // 设置Type属性 intent.setType(type); // 同时设置Data和Type属性 intent.setDataAndType(data, type);
Intent intent = new Intent(); // 直接往Intent添加基本类型,在方法内也是把数据存入Bundle // 该方法有多种重载 intent.putExtra(name, value); // 新建Bundle Bundle bundle = new Bundle(); // 往Bundle添加数据,XXX为基本类型 bundle.putXXX(key, value); bundle.putXXXArray(key, value); // 把Bundle添加进Intent intent.putExtras(bundle);
public class MyProvider extends ContentProvider { @Override public boolean onCreate() { // 第一次创建时调用,如果创建成功则返回true // 可以在这里打开数据库什么的 return true; } @Override public String getType(Uri uri) { // 返回ContentProvider所提供数据的MIME类型 return null; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // 实现查询方法 return null; } @Override public Uri insert(Uri uri, ContentValues values) { // 实现插入方法,返回插入条数 return null; } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { // 实现删除方法,返回删除条数 return 0; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // 实现更新方法,返回更新条数 return 0; } }
<provider android:name=".MyProvider" android:authorities="com.example.test.provider" android:exported="true" />
public class MyActivity extends Activity { private static String TAG = "MyActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ContentResolver resolver = getContentResolver(); // 传入对应的Uri进行增删查改操作 resolver.query(uri, projection, selection, selectionArgs, sortOrder); resolver.insert(url, values); resolver.delete(url, where, selectionArgs); resolver.update(uri, values, where, selectionArgs); } }
getContext().getContentResolver().notifyChange(uri, null);
public class MyIntentService extends IntentService { public MyIntentService(String name) { super(name); } @Override protected void onHandleIntent(Intent intent) { // IntentService会创建单独的worker线程来处理此处的代码 } }