java - 通知后刷新服务中的 Activity

标签 java android android-activity service notifications

我有一项服务

public class GcmIntentService extends IntentService{...}

管理通知。 当用户退出应用程序时收到通知时,点击通知即可恢复并更新主要 Activity

public class MainActivity extends Activity {

...
 lv = (ListView) findViewById(R.id.lv);
adapter = new Adapter(this, item);
lv .setAdapter(adapter);

...
}

但是如果用户已经在 Activity 中,我如何更新该 Activity ?

最佳答案

您必须使用 BroadcastReciever 来执行此任务:http://developer.android.com/reference/android/content/BroadcastReceiver.html

在 Activity 中:

public class MainActivity extends Activity {
    public static final String NOTIFY_ACTIVITY_ACTION = "notify_activity";
    private BroadcastReciver broadcastReciver;


 @Override
protected void onStart() {
    super.onStart();
    broadcastReciver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction.equals(NOTIFY_ACTIVITY_ACTION ))
            {
             //to do smth
            }
        }
    }

    IntentFilter filter = new IntentFilter( NOTIFY_ACTIVITY_ACTION );
    registerReceiver(broadcastReciver, filter);
}

@Override
protected void onStop()
{
 unregisterReceiver(broadcastReciver);
}


}

使用中:

Intent broadcastIntent = new Intent();
broadcastIntent.setAction(MainActivity.NOTIFY_ACTIVITY_ACTION );
broadcastIntent.putExtra("addtional_param", 1);
broadcastIntent.putExtra("addtional_param2", 2); //etc

sendBroadcast(broadcastIntent);

更新

顺便说一句,最好使用 LocalBroadcastManager 在应用程序内部发送广播。它使用与普通广播相同的方式,但首先创建 LocalBroadcastManager:

LocalBroadcastManager manager = LocalBroadcastManager.getInstance(MainActivity.this);

并在 onStart 中:

manager.registerReciever(broadcastReciver, filter);

并在 onStop 中:

manager.unregisterBroadcast(broadcastReciver);

在服务中:

manager.sendBroadcast(broadcastIntent);

关于java - 通知后刷新服务中的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25205813/

相关文章:

Java - 如何创建子字符串直到到达非数字字符?

java - 由于字符串格式导致 Seekbar 崩溃

android - 动态地将 View 组添加到BottomSheetDialogFragment不会显示任何内容

Android:在数据库中存储对图像的不变引用

android - 如何在 Android 中将 Activity 的 Root View 设置为 fragment ?

android-activity - 需要 DynamoDB/Redis Activity 流帮助

java - 防病毒软件如何以编程方式扫描已安装的 android 应用程序的代码(没有 root 权限)?

java - github 上的 Htmlunit 登录 - 无法识别表单 ID

java - Android 注释没有被正确理解

java - JSON 库是否就 .5000...1 的 double 值达成一致?