标签: android-asynctask

Android系统.片段getActivity()有时会返回null

在开发者控制台错误报告中,有时我会看到有NPE问题的报告.我不明白我的代码有什么问题.在模拟器上,我的设备应用程序在没有forcecloses的情况下运行良好,但是当调用getActivity()方法时,一些用户在片段类中获得NullPointerException.

活动

pulic class MyActivity extends FragmentActivity{

    private ViewPager pager; 
    private TitlePageIndicator indicator;
    private TabsAdapter adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        pager = (ViewPager) findViewById(R.id.pager);
        indicator = (TitlePageIndicator) findViewById(R.id.indicator);
        adapter = new TabsAdapter(getSupportFragmentManager(), false);

        adapter.addFragment(new FirstFragment());
        adapter.addFragment(new SecondFragment());
        indicator.notifyDataSetChanged();
        adapter.notifyDataSetChanged();

        // push first task
        FirstTask firstTask = new FirstTask(MyActivity.this);
        // set first fragment as listener
        firstTask.setTaskListener((TaskListener) adapter.getItem(0));
        firstTask.execute();
    }

    indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener()  {
        @Override
        public void onPageSelected(int position) {
            Fragment currentFragment = adapter.getItem(position);
            ((Taskable) currentFragment).executeTask();
        }

        @Override
        public void onPageScrolled(int …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-asynctask android-fragments android-activity

187
推荐指数
5
解决办法
14万
查看次数

什么参数传递给AsyncTask <arg1,arg2,arg3>?

我不明白我应该放在这里以及这些论点最终的位置?究竟应该放什么,它究竟会去哪里?我是否需要包括所有3或者我可以包括1,2,20?

android arguments android-asynctask

153
推荐指数
4
解决办法
10万
查看次数

Android上的AsyncTask和错误处理

我使用转换我的代码HandlerAsyncTask.后者非常擅长它 - 在主UI线程中异步更新和处理结果.我不清楚的是,如果出现问题,如何处理异常AsyncTask#doInBackground.

我这样做的方法是有一个错误处理程序并向它发送消息.它工作正常,但它是"正确的"方法还是有更好的选择?

另外我理解如果我将错误处理程序定义为Activity字段,它应该在UI线程中执行.但是,有时(非常不可预测)我会得到一个异常,说触发的代码Handler#handleMessage是在错误的线程上执行的.我应该初始化错误处理程序Activity#onCreate吗?放置runOnUiThreadHandler#handleMessage似乎是多余的,但执行非常可靠.

error-handling android handler android-asynctask

146
推荐指数
4
解决办法
7万
查看次数

android asynctask向ui发送回调

我有以下asynctask类,它不在活动中.在我正在初始化asynctask的活动中,我希望asynctask将回调报告回我的活动.可能吗?或者asynctask是否必须与活动位于同一个类文件中?

protected void onProgressUpdate(Integer... values) 
{
    super.onProgressUpdate(values);
    caller.sometextfield.setText("bla");
}
Run Code Online (Sandbox Code Playgroud)

像这样的东西?

android android-asynctask

146
推荐指数
3
解决办法
13万
查看次数

服务,异步任务和线程之间的区别?

Service,Async Task&Thread之间有什么区别.如果我没有错,他们都习惯在后台做一些事情.那么,如何决定使用哪个以及何时使用?

android android-service android-asynctask java-threads

145
推荐指数
4
解决办法
8万
查看次数

java.lang.IllegalStateException:无法在onSaveInstanceState之后执行此操作

我正在为我的应用程序使用支持库.在我的FragmentActivity中,我使用AsyncTask从Internet下载数据.在onPreExecute()方法中我添加了一个Fragment,在onPostExecute()方法中我再次删除它.当两者之间的方向发生变化时,我得到了上述异常.请看一下细节:

private class onFriendAddedAsyncTask extends AsyncTask<String, Void, String> {
    DummyFragment dummyFragment; 
    FragmentManager fm;
    FragmentTransaction ft;

@Override
protected void onPreExecute() {
    Log.v("MyFragmentActivity", "onFriendAddedAsyncTask/onPreExecute");
    dummyFragment = DummyFragment.newInstance();
    fm = getSupportFragmentManager();
    ft = fm.beginTransaction();
    ft.add(dummyFragment, "dummy_fragment");
    ft.commit();
}

@Override
protected void onPostExecute(String result) {
    Log.v("MyFragmentActivity", "onFriendAddedAsyncTask/onPostExecute");
    ft = fm.beginTransaction();
    ft.remove(dummyFragment);
    ft.commit();
}

@Override
protected String doInBackground(String... name) {
    Log.v("MyFragmentActivity", "onFriendAddedAsyncTask/doInBackground");
    ...
}
Run Code Online (Sandbox Code Playgroud)

我得到了以下LogCut:

01-05 23:54:19.958: V/MyFragmentActivity(12783): onFriendAddedAsyncTask/onPreExecute
01-05 23:54:19.968: V/DummyFragment(12783): onAttach
01-05 23:54:19.968: V/DummyFragment(12783): onCreate
01-05 23:54:19.968: V/MyFragmentActivity(12783): onFriendAddedAsyncTask/doInBackground
01-05 23:54:19.973: V/DummyFragment(12783): onCreateView …
Run Code Online (Sandbox Code Playgroud)

android exception android-asynctask illegalstateexception android-fragments

131
推荐指数
8
解决办法
15万
查看次数

android中的Asynctask vs Thread

在UI中,为了执行一些后台工作,我使用了一个单独的Thread.但正如其他人所说,我现在正在使用AsyncTask.

a Thread和an 之间的主要区别是AsyncTask什么?

在哪种情况下,我应该使用a Thread还是AsyncTask

multithreading android android-asynctask

129
推荐指数
5
解决办法
9万
查看次数

AsyncTaskLoader与AsyncTask

既然Honeycombv4 Compatibility Library可以使用AsyncTaskLoader.据我所知,它AsyncTaskLoader可以通过配置更改生存,如屏幕翻转.

是否建议使用AsyncTaskLoader而不是AsyncTask?是否LoaderManager也参与其中?

但我没有找到任何关于如何正确使用的好例子AsyncTaskLoader.文档也没有提供任何示例.谁能提供一些很好的例子.

android android-asynctask android-loadermanager

128
推荐指数
4
解决办法
5万
查看次数

多次执行AsyncTask

在我的Activity中,我使用了一个从AsyncTask扩展的类和一个参数,该参数是AsyncTask的一个实例.我打电话的时候mInstanceOfAT.execute("")一切都很好.但是当我按下再次调用AsyncTask的更新按钮时应用程序崩溃(如果网络作业不起作用).因此出现了一个例外情况

无法执行任务:任务已经执行(任务只能执行一次)

我试过为Asyctask的实例调用cancel(true),但它也不起作用.到目前为止唯一的解决方案是创建Asyntask的新实例.这是正确的方法吗?

谢谢.

android android-asynctask

127
推荐指数
2
解决办法
9万
查看次数

Android - 为AsyncTask设置超时?

我有一个AsyncTask我执行的类,它从网站下载大量数据.

如果最终用户在使用时数据连接速度非常慢或不稳定,我想AsyncTask在一段时间后进行超时.我的第一个方法是这样的:

MyDownloader downloader = new MyDownloader();
downloader.execute();
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
  @Override
  public void run() {
      if ( downloader.getStatus() == AsyncTask.Status.RUNNING )
          downloader.cancel(true);
  }
}, 30000 );
Run Code Online (Sandbox Code Playgroud)

启动后AsyncTask,一个新的处理程序被启动,将取消AsyncTask30秒后,如果它仍在运行.

这是一个好方法吗?或者内置的AsyncTask内容是否更适合此目的?

java android android-asynctask

122
推荐指数
3
解决办法
7万
查看次数