使用Activity类对象创建Activity的实例

use*_*225 3 android android-intent android-activity

我通过以下方式获得了一个活动课:

Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());

String activityClassName = launchIntent.getComponent().getClassName();

Class<?> activityClazz = Class.forName(activityClassName);
Run Code Online (Sandbox Code Playgroud)

是否可以使用activityClazz?创建此Activity的实例?如果是这样,怎么办?

(我的代码在独立的Java类中。不在活动或服务中。)

Dav*_*ser 5

从技术上讲,您可以创建一个这样的实例Activity。但是,此实例将是无用的,因为Context尚未设置其基础。

该规则是,你永远也不会创建Android组件的实例(ActivityServiceBroadcastReceiverProvider)你自己(使用new关键字或其他方式)。这些类仅应由Android框架创建,因为Android设置了Context这些对象的基础并管理生命周期。

简而言之,如果您需要创建这样的实例,则您的体系结构存在缺陷Activity