我编写了一个活动 A,当用户按下按钮时,它将执行 MyConfig.doSomething() ,其中 MyConfig 是简单的类,活动 A 传递给它。
public class A extends PreferenceActivity {
private MyConfig mMyConfig;
/* pseudo code, when button clicked, call */
mMyConfig.doSomething();
}
在 mMyConfig 中,它访问 SharedPreferences 以进行某些配置。因此,我可以这样做将活动传递给 mMyConfig 以调用 getSharedPreferences()。
mMyConfig = new MyConfig ( this );
我的请求来了:
我想做一些MyConfig.doSomething()
已经做过的事情,但是除非用户单击某个按钮来调用它,否则我想在 Android Boots-Up 时调用它。
我可以编写另一个类来扩展 BroadcastReceiver,然后通过调用启动活动 A startActivity(A.class)
,然后在 A 中执行一些技巧来mMyConfig.doSomething()
实现。它可以工作,但是当 Android 启动时,应用程序将显示在屏幕上。
我想在mMyConfig.doSomething()
不让用户知道的情况下隐式发生。我想有两种可能的解决方案,但我不知道该怎么做。
解决方案A:编写一个扩展BroadcastReceiver的类,启动一个读取A的SharedPreferences的服务(而不是活动A)并创建MyConfig对象来做doSomething()
。但是,如果活动本身从未启动,我不知道这是否可行,我怎么能这样做(从服务中读取 SharedPreferences)?
方案B:写一个扩展BroadcastReceiver的类,启动ActivityA不显示,调用startActivity(A.class)
onReceive放入Activity栈。这可能吗?