在Receiver中重新启动活动

时间:2015-03-10 21:14:25

标签: android android-activity broadcastreceiver receiver

我正在开发一个使用SMS接收数据并将数据存储到数据库中的应用。此外,我有一个活动,显示数据库查询的结果。 现在我想,如果这个特殊活动打开并且新消息到达,sms-receiver中的某些代码重新启动此活动,如果此活动未打开,则不会发生任何事情。

1 个答案:

答案 0 :(得分:1)

您可以在活动中注册BroadcastReceiver,以执行活动的刷新:

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了解更多信息)。