有没有别的方法可以在普通的java类里启动
------解决思路----------------------
别的方法是没办法的.不过你可以试试用java反射的方式 看能否启动起来
------解决思路----------------------
各种Start........Activity、service、广播等等,都封装在继承自Context抽象类的ContextImpl里,普通的java类,貌似不行吧.
------解决思路----------------------
class ContextImpl extends Context {
//整个App的主线程
final ActivityThread mMainThread;
//整个App的相关信息
final LoadedApk mPackageInfo;
//资源解析器
private final ResourcesManager mResourcesManager;
//App资源类
private final Resources mResources;
//外部Context的引用
private Context mOuterContext;
//默认主题
private int mThemeResource = 0;
private Resources.Theme mTheme = null;
//包管理器
private PackageManager mPackageManager;
................................
//以下是静态区注册系统的各种服务,多大五六十种系统服务,因此每个持有Context引用的对象都可以随时通过getSystemService方法来轻松获取系统服务。
static {
registerService(ACCESSIBILITY_SERVICE, new ServiceFetcher() {
public Object getService(ContextImpl ctx) {
return AccessibilityManager.getInstance(ctx);
}});
registerService(CAPTIONING_SERVICE, new ServiceFetcher() {
public Object getService(ContextImpl ctx) {
return new CaptioningManager(ctx);
}});
registerService(ACCOUNT_SERVICE, new ServiceFetcher() {
public Object createService(ContextImpl ctx) {
IBinder b = ServiceManager.getService(ACCOUNT_SERVICE);
IAccountManager service = IAccountManager.Stub.asInterface(b);
return new AccountManager(ctx, service);
}});
........................
}
.................
//启动Activity的地方
@Override
public void startActivity(Intent intent, Bundle options) {
warnIfCallingFromSystemProcess();
if ((intent.getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) == 0) {
throw new AndroidRuntimeException(
"Calling startActivity() from outside of an Activity "
+ " context requires the FLAG_ACTIVITY_NEW_TASK flag."
+ " Is this really what you want?");
}
mMainThread.getInstrumentation().execStartActivity(
getOuterContext(), mMainThread.getApplicationThread(), null,
(Activity)null, intent, -1, options);
}
..........
//启动服务的地方
@Override
public ComponentName startService(Intent service) {
warnIfCallingFromSystemProcess();
return startServiceCommon(service, mUser);
}
...............
}------解决思路----------------------

把Context作为参数传到普通类里啊
------解决思路----------------------
把Context作为参数传到普通类里啊
我觉得楼主新建一个类想做点其他操作
------解决思路----------------------
可以将Activity当做参数传给普通的java类。
比如当前activity叫 MainActivity。有一个类叫Test.。那么给他写一个构造方法 Test(Context context)
使用时这样,Test t = new Test(MainActivity.this);
ok 。在Test中你就可以用Intent开启新的activity了
------解决思路----------------------
可以将Activity当做参数传给普通的java类。
比如当前activity叫 MainActivity。有一个类叫Test.。那么给他写一个构造方法 Test(Context context)
使用时这样,Test t = new Test(MainActivity.this);
ok 。在Test中你就可以用Intent开启新的activity了
可行,实例化普通类的时候把mContext传递进去,我也这么写过