我希望有人对这个问题有所了解,因为它一直让我疯狂。
我有这个服务,我称之为IssueNotifier
,它有一些方法:
public void onCreate()
{
super.onCreate();
startService();
//initiate preferences to get values
prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
choice = Integer.valueOf(prefs.getString("bgProcessPref", "15"));
delay = choice * minute;
if (VIEWISSUES_ACTIVITY != null)
Log.d(getClass().getSimpleName(), "ServiceTest started");
}
public void onDestroy()
{
super.onDestroy();
stopService();
if (VIEWISSUES_ACTIVITY != null)
Log.d(getClass().getSimpleName(), "ServiceTest stopped");
}
private void startService()
{
final Handler handler = new Handler();
final Runnable runnable = new Runnable()
{
public void run()
{
if(VIEWISSUES_ACTIVITY.getNewIssues() > 0)
VIEWISSUES_ACTIVITY.sendNotification();
}
};
timer.scheduleAtFixedRate(new TimerTask()
{
public void run()
{
handler.post(runnable);
System.out.println(delay);
}
}, delay, delay);
}
private void stopService()
{
if(timer != null)
timer.cancel();
}
VIEWISSUES_ACTIVITY
是另一个将启动此服务的Activity,它的方法sendNotification()将通知用户新消息是否已到达:
//just pass the reference to the service
IssueNotifier.setMainActivity(this);
//start the service
startService(new Intent(this, IssueNotifier.class));
所有这些代码都运行良好,但我的问题是我不希望VIEWISSUES_ACTIVITY启动此服务,而是另一个Activity来执行此操作,当我尝试使用另一个活动启动服务时它不起作用因为sendNotification ()在VIEWISSUES_ACTIVITY活动中(它必须在那里)。那我怎么能实现我的目标呢?
答案 0 :(得分:0)
尝试:
Context.startService()
答案 1 :(得分:0)
在Service中实现sendNotification()
(我自己的方法)而不是Activity,这是实现它的方法。