我的主要 Activity 处理一个 ACTION_SEND Intent 。我根据 Intent 文本中收到的数据在数据库中放置了一条新记录。我的问题是,android 显然在方向改变后保留了这个 Intent ,所以每次我旋转手机时,我的数据库中都会多出一行。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.db_list);
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if ("text/plain".equals(type)) {
storeTextInDatabase(intent);
}
}
fillListFromDB();
registerForContextMenu(getListView());
}
我怎样才能在每次收到新的 Intent 后仅调用一次 storeTextInDatabase(intent)。 我的第一个想法是,我将检查 savedInstanceState 包的内容,如果它为 null,那么它是 Activity 的第一次调用。这个解决方案有一个问题,我想处理在我的 Activity 生命周期内广播的多个 Intent 。
最佳答案
尝试处理 Intent,然后删除刚刚处理的额外内容,即:
intent.removeExtra(Intent.EXTRA_TEXT);
它对我有用。 仅在 2.3 tough 上测试。
关于android - 多 Intent 处理由于方向改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435981/