在 onCreate() 之前,Android 系统服务不可用于活动 [关闭]
Posted
技术标签:
【中文标题】在 onCreate() 之前,Android 系统服务不可用于活动 [关闭]【英文标题】:Android System services not available to Activities before onCreate() [closed] 【发布时间】:2013-01-28 00:23:08 【问题描述】:....
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
...
done = true;
...
public class addcontacts extends ListActivity
protected void onCreate()
protected void execute(final Boolean success)
if (done)
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listItems);
setListAdapter(adapter);
public class UserLoginTask extends AsyncTask<Void, Void, Boolean>
@Override
protected Boolean doInBackground(Void... params)
...
@Override
protected void onPostExecute(final Boolean success)
setContentView(R.layout.main);
ac = new addcontacts();
ac.execute(true);
...
public class getcontacts extends AsyncTask<Void, Void, Boolean>
@Override
protected Boolean doInBackground(Void... params)
...
listItems.add(json_data.getString("login") + " " + derp);
...
...
@Override
protected void onPostExecute(final Boolean success)
getc = null;
//showProgress(false);
adapter.notifyDataSetChanged();
运行时错误:
02-12 15:59:35.274: E/AndroidRuntime(1308): FATAL EXCEPTION: main
02-12 15:59:35.274: E/AndroidRuntime(1308): java.lang.IllegalStateException: System services not available to Activities before onCreate()
02-12 15:59:35.274: E/AndroidRuntime(1308): at android.app.Activity.getSystemService(Activity.java:3989)
02-12 15:59:35.274: E/AndroidRuntime(1308): at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
02-12 15:59:35.274: E/AndroidRuntime(1308): at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:153)
有什么解决办法吗?
【问题讨论】:
是的,它不可用。你现在有什么问题? 只是不要太早访问它? 在 Activity 完全构建之前没有可用的系统服务。即调用 onCreate() 返回。 你在哪里打电话execute()
?
【参考方案1】:
唯一损坏的是您的代码。修复方法是避免在 onCreate() 完成之前访问系统服务,否则还没有对活动对象进行设置,因此您将面临自我解释的原因异常。
【讨论】:
addcontacts 类在应用程序完全启动 30 秒后创建 您的代码已损坏。除非完成onCreate()
,否则您无法访问系统服务。时期。也许你也有糟糕的设备或者糟糕的设备 + 安装了很多垃圾,这使得它变得迟钝,但这对框架的工作方式没有影响。您最好尝试分析您的应用或尝试找到罪魁祸首并修复它。
安卓虚拟设备
不过,30 秒还是很多。这不正常,即使在运行 JB 的 AVD 模拟平板电脑上也是如此
我刚刚更新了我的第一篇文章。添加了done
变量。执行if(done)
内的代码,表示 onCreate 已完成以上是关于在 onCreate() 之前,Android 系统服务不可用于活动 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
android 关于为什么在onCreate里调用view.getChildAt.getLeft() 没有值!
在启动activity之前,调用application的oncreate
android 开发中 使用Application类 为啥OnCreate()方法没被调用?
Android在onCreate()方法中动态获取TextView控件的高度