Привет, ребята, как я могу сделать, чтобы обновить Activity из класса, расширяющего BroadcastReceiver? Классическая функция StartActivity с намерением не работает. :/Как обновить/перезагрузить активность из широковещательного приемника android
ответ
Добавить эту строку в BroadcastReceiver
YourActivity.Update();
К этому создать статический метод Update() в классе деятельности и делать все вещи вы хотите в методе Update().
В деятельности:
class TestActivity extends Activity{
private static TestActivity Obj;
public TestActivity(){
Obj=this;
}
public static getInstance(){
return Obj;
}
public void refresh(){
//refresh Logic here
}
}
В Receiver:
public TestReceiver extends BroadcastReceiver{
........ OnReceive(){
if(TestActivity.getInstance()!=null){
TestActivity.getInstance().refresh();
}
}
}
Привет, ребята, как я могу сделать, чтобы освежить действия из класса, которые проходят BroadcastReceiver?
Вы можете достичь этого, добавив BroadcastReceiver в свою деятельность и отправляя в него вещание в своем классе, который расширяет BroadcastReceiver.
Зарегистрируйте BroadcastReceiver в своей деятельности:
IntentFilter filter = new IntentFilter("yourpackagename.updateActivity");
registerReceiver(new BroadcastReceiver(){
public void onReceive(Context context, Intent intent) {
// Update your Activity here.
}
}, filter);
Отправить радиопередачу для этой деятельности в своем классе, который простирается BroadcastReceiver:
public void onReceive(Context context, Intent intent) {
if(meet the condition){
Intent i = new Intent("yourpackagename.updateActivity");
context.sendBroadcast(i);
}
}
PS. Это решение может гарантировать, что каждое действие получит уведомление об обновлении, когда есть более одного экземпляра Activity, в то время как решение статического поля не может этого гарантировать.