我有一个更新例程(连接到服务器并查找自己的更新版本),它在我的第一个活动上运行onCreate。如果有更新,则会向用户显示一个对话框,如果不是必需更新,则询问他们是否要下载更新。
问题是我不想在活动中运行它,因为每次重新加载活动时都会调用它,就像旋转设备时一样。
我可以创建一个单例,它知道检查是否已经执行过或类似但是更喜欢在活动之外进行检查,因为它似乎不是正确的地方。
我遇到的问题是如果我把它放在android.app.application中那么我没有活动来创建对话框。我可以为此创建一个加载器活动,然后激活主活动,但这似乎也不理想。
处理这种情况的好方法是什么?
答案 0 :(得分:2)
您无法从应用程序上下文启动活动,遗憾的是,这是不可能的。您需要做的是使用
创建活动android:theme="@android:style/Theme.Dialog"
在AndroidManifest.xml中的activity标记内。在此活动中,您应该定义一个相当简单的布局,使其看起来尽可能像对话框(如果您希望它看起来像其他东西,则不是这样)。
另一种选择是让您的第一个活动设置为BroadcastReceiver,然后设置应用程序上下文
sendBroadcast(new Intent("MyUniqueID"));
在BroadcastReceiver的onReceive方法中,显示带有Activity上下文的对话框。
答案 1 :(得分:0)
crdnilfan给出了很好的答案。如果您想在MainActivity中执行此操作,那么您可以按照here描述的正确方式维护活动生命周期
如果您想限制在旋转设备时拨打onCreate()
,则可以指定configChanges,
<activity
android:name="com.example.temp.MainActivity"
android:configChanges="orientation"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我希望它会有所帮助!!