我有一项服务
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/