0 0

在onResume()中调用getIntent()得不到Extra的问题,求解3

我有一个AlarmManager定期发送PendingIntent,如下:
Intent alarmIntent=new Intent(context,Notes.class);
alarmIntent.putExtra("MemoID", memoid);
PendingIntent pIntent=PendingIntent.getActivity(context, 0, alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT);

这个PendingIntent会打开一个Notes.我在Notes中的onStart()方法中调用
getIntent().getIntExtra("MemoID", -1);能够得到想要的值。但是这种方法AlarmManager每次触发时都会生成一个Notes,但我不想让生成多个Notes对象。因此,我在AndroidManifest.xml中设置了

      <activity android:name=".Notes"
      android:launchMode="singleTask"/>

看,launchMode设置成了singleTask模式,这样AlarmManager每次触发时,就不会调用onStart()方法了,而是调用onResume()方法,为了得到MemoID的值,我在onResume()中使用getIntent().getIntExtra("MemoID", -1);却得不到想要的值了,这是为什么啊?
2011年8月08日 21:05

3个答案 按时间排序 按投票排序

0 0

难道不行??我测试通过的··

2011年8月12日 22:45
0 0

2011年8月08日 22:34
0 0

这个我测试通过应该是没问题

AlarmtestActivity.java
package com.test.alarmtest;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;

public class AlarmtestActivity extends Activity {
    /** Called when the activity is first created. */
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        int i=10000;
        Intent alarmIntent=new Intent(this,Notes.class); 
        alarmIntent.putExtra("MemoID", i); 
        PendingIntent pIntent=PendingIntent.getActivity(this, 0, alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT); 
        AlarmManager alarm=(AlarmManager)getSystemService(ALARM_SERVICE);  
        alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),5*1000, pIntent);//4秒后执

    }
}


Notes.java
public class Notes extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}


	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		int i=getIntent().getIntExtra("MemoID", 0);
		Log.v("Node","onResume"+i);
	}

	

}

<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".AlarmtestActivity" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>
		<activity android:name=".Notes"
		android:launchMode="singleTask"
		></activity>
	</application>

2011年8月08日 22:32

相关推荐

Global site tag (gtag.js) - Google Analytics