Aln*_*tak 5 android dataflow broadcastreceiver android-contentprovider android-activity
我开发了一个接收广播然后启动的应用程序Activity
,在那里Activity
查询ContentProvider
从DNS中实时提取信息.
我希望能够改变这一点,而不是去:
BroadcastReceiver.onReceive() {
Intent intent = new Intent(...);
intent.setData(...); // set a single String data
context.startActivity(intent);
}
Activity.onCreate() {
String value = intent.getData(); // get the String data
Cursor = ContentProvider.query(search);
...
setContentView(...);
}
Run Code Online (Sandbox Code Playgroud)
它去:
BroadcastReceiver.onReceive() {
Cursor = ContentProvider.query(...);
if (cursor != null) {
Intent intent = new Intent(...);
// how do I pass the cursor?
getContext().startActivity(intent);
}
}
Activity.onCreate() {
// how do I retrieve the cursor?
setContentView(...);
}
Run Code Online (Sandbox Code Playgroud)
即如果query()
返回没有我想错过的数据启动
Activity
,并允许广播消息正常通过.
如果query()
确实返回数据,我希望Cursor
将其提供给Activity
,这样我就不必再去查询数据了.
反过来,它Activity
有自己的UI,用户需要响应.
这可能吗?
你想要什么对我来说有点困难,相当低效.我建议您使用第一个替代方案,但是当您在活动中加载Cursor时,检查是否没有数据,然后退出活动.
BroadcastReceiver.onReceive() {
Intent intent = new Intent(...);
intent.setData(...); // set a single String data
context.startActivity(intent);
}
Activity.onCreate() {
String value = intent.getData(); // get the String data
Cursor = ContentProvider.query(search);
if(cursor.isEmpty() ...){
finish();
return;
}
...
setContentView(...);
}
Run Code Online (Sandbox Code Playgroud)
这将具有完全相同的效果,光标将仅加载一次,并且仅当光标中存在某些内容时才会显示活动.唯一的额外开销是无论如何都会触发意图,但这并不是完全无聊:)
请注意,不会有任何闪烁或任何东西,Android处理在onCreate()中调用完成的情况(我相信onStart和onResume),以便用户永远不会知道它发生了.
归档时间: |
|
查看次数: |
7191 次 |
最近记录: |