有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java创建新实例会导致线程崩溃

大家好,我的社区!我目前正在构建的一个安卓 java应用程序中有一行代码存在问题

在应用程序的启动过程中,我运行(在其他代码中)以下创建另一个类的新实例的代码。然后,它在类内部运行一个方法,该方法在应用程序内部设置许多不同的内容。由于这是一个大的处理量,它在另一个线程中保持应用程序以良好的速度运行。该方法不能是静态的,因为它使用上下文。每当我创建包含线程的类的新实例时(Longer\u Tasks Set\u Up\u Reference=new Longer\u Tasks()),它就会崩溃。我想知道如何修复代码,因为我似乎在某个地方出现了运行时错误

    new Thread(new Runnable()
    {
        public void run()
        {       
            Longer_Tasks Set_Up_Reference = new Longer_Tasks();
            Set_Up_Reference.Variable_Set_Up();
        }
    }).start();

我已经通过调试器将其缩小到这一行

我为缺少信息而道歉,以下是构造器:

import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.SecureRandom;
import java.util.Arrays;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import 安卓.annotation.SuppressLint;
import 安卓.app.Activity;
import 安卓.graphics.Bitmap;
import 安卓.graphics.Bitmap.CompressFormat;

public class Longer_Tasks extends Activity
{
 ... Other Functions and Procedures ...

    public void Variable_Set_Up()
    {
        Profile_Load_Data_From_File();
        Profile_Load_Data_From_Server();
    }

.... Other Functions and Procedures ...
}

以下是堆栈跟踪(我认为):

08-11 22:10:08.347: D/WifiStateMachine(1018): handleMessage: E msg.what=131155
08-11 22:10:08.347: D/WifiStateMachine(1018): processMsg: ConnectedState
08-11 22:10:08.348: D/WifiStateMachine(1018): processMsg: L2ConnectedState
08-11 22:10:08.361: D/WifiStateMachine(1018): handleMessage: X
08-11 22:10:11.364: D/WifiStateMachine(1018): handleMessage: E msg.what=131155
08-11 22:10:11.364: D/WifiStateMachine(1018): processMsg: ConnectedState
08-11 22:10:11.366: D/WifiStateMachine(1018): processMsg: L2ConnectedState
08-11 22:10:11.383: D/WifiStateMachine(1018): handleMessage: X
08-11 22:10:11.970: W/dalvikvm(9227): threadid=11: thread exiting with uncaught exception (group=0x41b33d40)
08-11 22:10:11.988: E/AndroidRuntime(9227): FATAL EXCEPTION: Thread-46755
08-11 22:10:11.988: E/AndroidRuntime(9227): Process: com.messenger_app, PID: 9227
08-11 22:10:11.988: E/AndroidRuntime(9227): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
08-11 22:10:11.988: E/AndroidRuntime(9227):     at 安卓.os.Handler.<init>(Handler.java:200)
08-11 22:10:11.988: E/AndroidRuntime(9227):     at 安卓.os.Handler.<init>(Handler.java:114)
08-11 22:10:11.988: E/AndroidRuntime(9227):     at 安卓.app.Activity.<init>(Activity.java:773)
08-11 22:10:11.988: E/AndroidRuntime(9227):     at com.messenger_app.Longer_Tasks.<init>(Longer_Tasks.java:22)
08-11 22:10:11.988: E/AndroidRuntime(9227):     at com.messenger_app.Home_Screen$1.run(Home_Screen.java:53)
08-11 22:10:11.988: E/AndroidRuntime(9227):     at java.lang.Thread.run(Thread.java:841)
08-11 22:10:11.996: W/ActivityManager(1018):   Force finishing activity com.messenger_app/.Home_Screen
08-11 22:10:12.160: D/dalvikvm(1018): GC_FOR_ALLOC freed 663K, 18% free 25966K/31436K, paused 151ms, total 151ms

希望这有帮助


共 (1) 个答案