【问题标题】:Restarting an activity in Receiver在 Receiver 中重新启动活动
【发布时间】:2015-03-10 21:14:24
【问题描述】:

我正在开发一个使用 SMS 接收数据并将其存储到数据库中的应用程序。另外,我有一个显示数据库查询结果的活动。 现在我想,如果这个特殊活动是打开的,并且有新消息到达 sms-receiver 中的一些代码重新启动这个活动,如果这个活动没有打开,那么什么都不会发生。

【问题讨论】:

    标签: android android-activity broadcastreceiver receiver


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

    【讨论】:

    • 以防万一它真的有帮助,如果你投票并接受我的回答,我会非常感激;)
    • 我喜欢这样做,但我的声誉很低,我不能投票。抱歉 :( 。一旦我得到足够的,我会这样做。
    • 哦,亲爱的,您可以从 15 分开始投票 - 这不是什么新鲜事。你不能接受答案吗?为了避免对您的问题投反对票,您应该至少添加一些代码来证明您已经尝试过某些东西。否则有些人倾向于否决您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多