我目前在我的项目中有2个活动,活动A(主要)和活动B。
活动B使用Jsoup进行了一些解析,因此加载所有内容都需要一些时间。
因此,我想知道是否可以在应用启动时也启动活动B,但不显示它?
答案 0 :(得分:1)
为什么在加载活动A时不能使用异步任务,这时在后台通过异步任务开始解析数据,以便获取所有数据。
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
//Use Your parameter instead of this
// code that will run in the background
return ;
}
protected void onProgressUpdate(Integer... progress) {
// receive progress updates from doInBackground
}
protected void onPostExecute(Long result) {
// update the UI after background processes completes
}
}
从主线程执行AsyncTask类:
new DownloadFilesTask().execute(url1, url2, url3);
答案 1 :(得分:0)
不要为活动B设置setContentView()。
答案 2 :(得分:0)
长时间运行的后台任务应在服务或异步上完成。 但是,如果有特殊的需要开始不可见的活动,您将在下面找到所有信息...
请记住,在 Headless 活动中,您不能执行长时间运行的任务,这仅仅是为了触发某些事情
public class HeadLessActivity extends Activity {
private static final String TAG = "HeadLessActivity";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "on create called");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "on on resume called called");
moveTaskToBack(true);
try {
Log.d(TAG, "sleeping for 3 seconds");
Thread.sleep(3000);//todo:small work here
Log.d(TAG, "resuming");
Log.d(TAG, "finishing");
finish();
} catch (InterruptedException e) {
e.printStackTrace();
Log.d(TAG, "could not sleep: " + e.getMessage());
}
}
在清单中添加活动
<activity android:name=".HeadLessActivity" android:theme="@style/HeadLessTheme.NoDisplay"/>
添加主题
<style name="HeadLessTheme.NoDisplay">
<item name="android:windowBackground">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowDisablePreview">true</item>
<item name="android:windowNoDisplay">true</item>
</style>