Android 使用带有异常的asynctask networkOnMainThreadException

Android 使用带有异常的asynctask networkOnMainThreadException,android,exception,android-asynctask,Android,Exception,Android Asynctask,我已经在emulator上的应用程序中使用twitter实现了一些操作,但在实际设备上,我有一个例外: android.os.NetworkOnMainThreadException 我已经读过关于该错误的内容,这是因为我需要在主操作之外执行一个线程,但不了解如何调用函数asyncsTask,因为我需要将共享首选项作为参数发送。 --------------------- 我需要把函数isAuthenticated或其代码的一部分放在AsyncTask中,但需要将send prefs作为参数,

我已经在emulator上的应用程序中使用twitter实现了一些操作,但在实际设备上,我有一个例外:

android.os.NetworkOnMainThreadException
我已经读过关于该错误的内容,这是因为我需要在主操作之外执行一个线程,但不了解如何调用函数asyncsTask,因为我需要将共享首选项作为参数发送。 --------------------- 我需要把函数isAuthenticated或其代码的一部分放在AsyncTask中,但需要将send prefs作为参数,我不知道该怎么做

我放了一部分代码

这里叫

if (TwitterUtils.isAuthenticated(prefs)) {   
......
.....
....
}
类内TwitterUtils.java

已验证公共静态布尔值(SharedReferences prefs){

有解决办法吗


谢谢

当您调用twitter.getAccountSettings()时,此方法会发出网络请求,与所有请求一样,它必须在线程上完成。您需要传递SharedReferences的事实不会改变任何事情

要将某些参数传递给AsyncTask,必须按如下方式抛出execute()方法: 新建DownloadFilesTask().execute(url1、url2、url3)

此处的详细信息:

请尝试使用以避免出现这种情况。 签出。它将回答您的问题。

替换您的代码:

if (TwitterUtils.isAuthenticated(prefs)) {   
......
.....
....
}
以下是:

    new AsyncTask<SharedPreferences,Object, Boolean>() {

        @Override
        protected Boolean doInBackground(SharedPreferences... params) {
            return TwitterUtils.isAuthenticated(params[0]);
        }

        @Override
        protected void onPostExecute(Boolean isAuthenticated) {
            if (isAuthenticated) {
                // Do processing after successful authentication
            }
            else {
                // Do processing after authentication failure
            }
        }
    }.execute(prefs);
newasynctask(){
@凌驾
受保护的布尔doInBackground(SharedReferences…参数){
返回TwitterUtils.isAuthenticated(参数[0]);
}
@凌驾
受保护的void onPostExecute(布尔值已验证){
如果(未经验证){
//验证成功后执行处理
}
否则{
//在身份验证失败后执行处理
}
}
}.执行(prefs);

我收到了相同的错误。请将完整的代码发布到添加异步任务的地方。对此我将非常感谢。您好,您可以提出一个问题,我将以更完整的回答回答您。谢谢您的回答。但我已经发布了我的问题。您可以在此处查看:
    new AsyncTask<SharedPreferences,Object, Boolean>() {

        @Override
        protected Boolean doInBackground(SharedPreferences... params) {
            return TwitterUtils.isAuthenticated(params[0]);
        }

        @Override
        protected void onPostExecute(Boolean isAuthenticated) {
            if (isAuthenticated) {
                // Do processing after successful authentication
            }
            else {
                // Do processing after authentication failure
            }
        }
    }.execute(prefs);