gpt4 book ai didi

android - 如何从获取 NPE 的 Android Activity 调用另一个 Activity AsyncTask 类

转载 作者:行者123 更新时间:2023-11-30 01:25:39 24 4
gpt4 key购买 nike

  1. ABC.class第一节 Activity 课。
  2. XYZ.class 是 AsyncTask Activity 类。

我的应用程序中有超过 10 个异步任务,因此我将异步任务保留在单独的类中。

我正在从 Activity(ABC.class) 调用另一个 Activity Asynctask 类(XYZ.class)。

问题:

1.我可以从 ABC.class 调用该异步任务,但是,我在 XYZ.class 类的 OnCreate 中保留了一些实例值(获取 Azure 本地数据库数据)。所以 Asynctask 得到了 NPE。

2.当异步任务从其他 Activity 调用时,Oncreate 方法未运行。

3.在 doinbackgroud 内部我收到 NPE 错误。

帮助我解决这个问题,否则建议我任何其他解决方案。

编辑:1

在我的异步任务中,我从Azure服务器获取数据到本地数据库,所以我需要保留在Oncreate中的实例。

ABC.class

调用异步任务

 AsyncTaskload_UserGroupMappingTableClass myClass = new AsyncTaskload_UserGroupMappingTableClass(getApplicationContext());
myClass.execute();

XYZ.class

th_tbusergroupmapping 是我的数据库名称

 /*CLient for Table5 */
private static MobileServiceClient mClient_UserGroupMapping;

//ONLINE CLIENT AZURE
public static MobileServiceTable<th_tbusergroupmapping> mToDoTable_UserGroupMapping_ServerAzure;

//Offline CLient FOr LOCAL Datbase.

public static MobileServiceSyncTable<th_tbusergroupmapping> mToDoTable_UserGroupMapping_Local_Database;


@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
try {
// Create the Mobile Service Client instance, using the provided

// Mobile Service URL and key
mClient_UserGroupMapping = new MobileServiceClient(
"***********",
"**************",
this).withFilter(new ProgressFilter());


/*UserGroupMapping*/
// Get the Mobile Service Table instance to use
mToDoTable_UserGroupMapping_ServerAzure = mClient_UserGroupMapping.getTable(th_tbusergroupmapping.class);

// LOCAL DATABASE TABLE Instance to use
mToDoTable_UserGroupMapping_Local_Database= mClient_UserGroupMapping.getSyncTable("th_tbusergroupmapping", th_tbusergroupmapping.class);


//Init local storage
initLocalStore().get();


}
catch (MalformedURLException e)
{

Log.i("Oncreate", "There was an error creating the Mobile Service. Verify the URL......!");

} catch (Exception e) {

Log.i("Oncreate", "Exception Occur......!");
}

}


public static class AsyncTaskload_UserGroupMappingTableClass extends AsyncTask<Void, String, Void>
{

private Context context;
public AsyncTaskload_UserGroupMappingTableClass(Context context) {
this.context = context;
}

@Override
protected void onPreExecute()
{
super.onPreExecute();

}
@Override
protected Void doInBackground(Void... params)
{
}
@Override
protected void onPostExecute(Void result)
{

try
{

Log.i("DONE ", "Data Sync Done Successfully UserGroupMapping 1");


} catch (Exception e)
{
e.printStackTrace();

Log.i("Exception ", "Post Excecute");
}
}

}

最佳答案

那么不要将 AsyncTask 保留在 Activity 中;只需将其保存在普通的 Java 类中,不要尝试将数据保存在该类的实例中;将您的信息存储在其他地方:在单例类中,或在共享首选项中,或在 sqlite 数据库中,等等。

关于android - 如何从获取 NPE 的 Android Activity 调用另一个 Activity AsyncTask 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36452030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com