3
  • 我有一个在 Android 2.3.6 及之前和更低版本上开发和测试的应用程序。它工作正常。
  • 我在装有 Android 4.0.4 的新 Micromax A110 上运行该应用程序,当我从 Activity A 启动 Activity B 并按下后退按钮(或 A 中的 Activity C/D/E)时它崩溃,并显示以下错误日志vv

01-10 18:35:44.372: E/AndroidRuntime(18378): 致命异常: Timer-1 01-10 18:35:44.372: E/AndroidRuntime(18378): java.lang.IllegalStateException: 必须从主线程调用进程 01-10 18:35:44.372: E/AndroidRuntime(18378): 在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1373) 01-10 18:35:44.372: E/AndroidRuntime(18378): 在android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:437) 01-10 18:35:44.372: E/AndroidRuntime(18378): 在 android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:454) 01-10 18: 35:44.372: E/AndroidRuntime(18378): 在 android.app.Activity.onBackPressed(Activity.java:2134) 01-10 18:35:44.372: E/AndroidRuntime(18378): 在 com.vwap.friends.MygoBack (MyDialog.java:90) 01-10 18:35:44.372: E/AndroidRuntime(18378):在 com.vwap.friends.MyDialog$3.run(MyDialog.java:83) 01-10 18:35:44.372: E/AndroidRuntime(18378): 在 java.util.Timer$TimerImpl.run(Timer.java:284 )

  • 我完全不知道片段的概念(我计划尽快处理),看起来错误与它有关。

我不知道从哪里开始。我是从阅读 Fragments 开始,还是可以快速解决这个问题并发布我的应用程序?

4

3 回答 3

2

您正在主线程上执行网络操作。如果您的目标 SDK 是 11 或更高版本,则会抛出NetworkOnMainThreadException,因为此行为可能会阻塞 UI 并导致应用程序无响应。

您可以使用 anAsyncTask来解决这个问题,将数据加载到其doInBackground(..).

于 2013-01-10T14:09:08.440 回答
1

尝试使用runOnUiThread(可运行 操作)。

或者

您也可以尝试使用Handler

final Runnable YOURVIEW = new Runnable()
{
    public void run() 
    {
        SampleMethod(); // Put your Method What you want change
        handler.postDelayed(this, timeout);
    }
};

handler.postDelayed(changeView, timeout);
于 2013-01-10T13:31:01.683 回答
0

即使我也面临类似的问题,但我认为您必须包含android_support_v4.jar文件以兼容所有版本的 Android。

于 2013-03-29T04:55:03.017 回答