如何在不使用包管理器的情况下获取启动器的活动/意图(自封装)
问题描述:
我有一个在3个不同包中共享的基本代码。
我想对当前包的发射活动,这是我今天做的:如何在不使用包管理器的情况下获取启动器的活动/意图(自封装)
PackageManager pm = context.getPackageManager();
intent = pm.getLaunchIntentForPackage(context.getPackageName());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
flag = PendingIntent.FLAG_UPDATE_CURRENT;
return PendingIntent.getActivity(context, 0, intent, flag);
但我收到了崩溃报告Caused by java.lang.RuntimeException: Package manager has died
所使用的context
属于应运行的服务,但大家都知道,由于系统要求,它总能停下来。
我知道我可以捕捉到异常,但发射意图将会丢失。
我希望有一个较少的资源需求方法来获取自封装的启动意向。
P.S. 另一种解决方案是使用每个包的主要活动初始化一种singlet,但由于packageName在运行时是已知的,我想我可以避免实现这一点。
答
我可以尝试使用可以捕获包之间事件的广播接收器。 因此,您可以发送,存储您想要的任何数据而不会终止事件。
你的意思是创建一个指定的broadcastReceiver接收的特定事件?生病仍然必须实现3'相同'broadcastReceiver,这是非常相似的singletone解决方案。 – SagiLow
@SagiLow广播接收机是'android like'功能。 – Vyacheslav
虐待仍然必须实现接收器 - 每包,这是我想要避免 – SagiLow