在 Receiver 中重新启动 activity
Restarting an activity in Receiver
我正在开发一个使用 SMS 接收数据并将数据存储到数据库中的应用程序。另外,我有一个 activity 显示数据库查询的结果。
现在我想,如果这个特殊的 activity 是打开的并且一条新消息到达 sms-receiver 中的一些代码重新启动这个 activity 如果这个 activity 没有打开那么什么都不会发生。
您可以在 activity 中注册一个 BroadcastReceiver
来执行 activity 的刷新:
public class YourActivity extends Activity {
private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// refresh UI or finish activity and start again
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
IntentFilter filter = new IntentFilter("ACTION_REFRESH_UI");
registerReceiver(myReceiver, filter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(myReceiver);
}
}
每当有新消息存储到数据库中时发送广播:
Intent intent = new Intent();
intent.setAction("ACTION_REFRESH_UI");
sendBroadcast(intent);
您还可以为数据库添加一个内容观察器,它会收到有关更改的通知并发送广播(有关更多信息,请参阅 this example)。
我正在开发一个使用 SMS 接收数据并将数据存储到数据库中的应用程序。另外,我有一个 activity 显示数据库查询的结果。 现在我想,如果这个特殊的 activity 是打开的并且一条新消息到达 sms-receiver 中的一些代码重新启动这个 activity 如果这个 activity 没有打开那么什么都不会发生。
您可以在 activity 中注册一个 BroadcastReceiver
来执行 activity 的刷新:
public class YourActivity extends Activity {
private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// refresh UI or finish activity and start again
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
IntentFilter filter = new IntentFilter("ACTION_REFRESH_UI");
registerReceiver(myReceiver, filter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(myReceiver);
}
}
每当有新消息存储到数据库中时发送广播:
Intent intent = new Intent();
intent.setAction("ACTION_REFRESH_UI");
sendBroadcast(intent);
您还可以为数据库添加一个内容观察器,它会收到有关更改的通知并发送广播(有关更多信息,请参阅 this example)。