在服务类中更改会话密钥的值后,它会显示默认值,同时使用pendingIntent
调用活动0)这是我的SharedPreference文件
public class SessionCounter {
SharedPreferences pref;
Editor editor;
Context _context;
int PRIVATE_MODE = 0;
private static final String PREF_NAME = "AndroidCounterPref";
private static final String sessionCounter = "session_Counter";
public SessionCounter(Context context){
this._context = context;
pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
editor = pref.edit();
}
public void createCounterSession(Integer name){
editor.putInt(sessionCounter, name);
editor.commit();
}
public int getCounterSession(){
int val=pref.getInt(sessionCounter, 0);
return val;
}
}
1)这是我的服务类CaptureImagesService
类
public static int COUNTER=-1;
public int onStartCommand(Intent intent, int flags, int startId){
context=this;
this.startId=startId;
randomTime=getRandom(time_interval) * 30 * 1000 ;
timer1=new Timer();
timer1.schedule(new TimerTask() {
@Override
public void run() {
sessionCounter.createCounterSession(1);
startAlarm();
}
}, randomTime);
return START_STICKY;
}
public void startAlarm()
{
sessionCounter.createCounterSession(1);
manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(CaptureImagesService.this, HomeActivity.class);
alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
pendingIntent=PendingIntent.getActivity(getBaseContext(), 1001, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Log.d("CaptureImagesService", "after pendingIntent");
long whenToTrigger=Calendar.getInstance().getTimeInMillis();
manager.set(AlarmManager.RTC_WAKEUP, whenToTrigger, pendingIntent);
}
2)这是我的MainActivity onResume
方法,我希望使用此值,如果COUNTER
的值为1则执行操作
protected void onResume() {
super.onResume();
if(sessionCounter.getCounterSession()==1)
WakeUpDevice();
askForPicture();
//etc
}
}
public void addCall(View v) {
if (sfStore.getString(KEY_CURRENT_CALL_ID, "-1").equalsIgnoreCase("-1")) {
startService(new Intent(getBaseContext(), CaptureImagesService.class));
}
请帮我解决这个问题
答案 0 :(得分:0)
我使用了getBroadcast而不是getActivity
public class CaptureBroadcast extends BroadcastReceiver{
public static boolean counterNew;
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
counterNew=true; //and check if counter is true then
// do some code in onResume method of HomeActivity
contextStart=context;
Intent intentHome=new Intent(context, HomeActivity.class);
intentHome.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intentHome);
}
}
在HomeActivity onResume
protected void onResume() {
super.onResume();
if(CaptureBroadcast.counterNew==true){
// some code
}
}