2017-07-08 43 views
1

我有一个在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在运行时是已知的,我想我可以避免实现这一点。

回答

0

我可以尝试使用可以捕获包之间事件的广播接收器。 因此,您可以发送,存储您想要的任何数据而不会终止事件。

+0

你的意思是创建一个指定的broadcastReceiver接收的特定事件?生病仍然必须实现3'相同'broadcastReceiver,这是非常相似的singletone解决方案。 – SagiLow

+0

@SagiLow广播接收机是'android like'功能。 – Vyacheslav

+0

虐待仍然必须实现接收器 - 每包,这是我想要避免 – SagiLow

相关问题