区分活动呼叫案例:来自其他活动/其他包/按系统

时间:2013-08-18 07:19:13

标签: android android-intent android-activity

我正在制作一个简单的电子书阅读器应用程序,很多情况下都可以调用一个活动。

我希望在

的情况下区分被叫活动以了解其原始动作
  1. 从我的另一项活动:这可以很容易地解决 来自通话活动的StartActivityForResult
  2. 在共享操作后通过后退按钮从其他软件包应用程序调用(“哎呀,我错过了点击分享按钮,然后返回。”)。
  3. 根据用户的多任务选择进行切换。
  4. 用户点击在开始屏幕上点击:这可能是由知识产权清单上的MAIN入口点所知。
  5. 如何了解上述情况?

2 个答案:

答案 0 :(得分:0)

我对上述问题的实际方式不太确定,因为我在android中也是一个新人。 但据我所知,...通过后退按钮调用并通过用户的多任务处理切换,导致活动进入pause状态。

因此,您可以在活动中使用"onPause"方法访问它。

答案 1 :(得分:0)

我不知道为什么你需要这样做但是......

  

1.从我的另一项活动开始:StartActivityForResult可以通过调用活动轻松解决这个问题。

是的,只要致电Activity是您自己的,因为您无法保证任何第三方代码都会使用startActivityForResult(...)。但是,您可以在其他情况下使用getCallingPackage()getCallingActivity()

  

2.在共享操作后通过其他软件包应用程序的后退按钮进行调用(“哎呀,我错过了点击共享按钮,然后返回。”)。

当用户按下BACK按钮时,Activity未被“调用” - 它只是被恢复或重新启动。原始的调用应用/活动/方法仍然适用 - 无法确定这是否已发生,因为正常的Activity生命周期方法(onStart()onResume())总是如此即使首次创建Activity也会调用。

  

3.由用户的多任务处理选择。

如果您的意思是使用“最近的”应用视图,则同样适用于我对上述2.的回答。

  

4.用户点击开始屏幕即可:这可能是由知识产权清单上的MAIN入口点知道的。

在这种情况下,onCreate()会被调用,但如果您的Activity因任何原因而被停止,则可能会根据您使用的启动模式重新启动它。

简而言之,我无法确定您是否能够收集有关Activity如何变为活跃状态的任何准确信息。