InterServiceで起動しているスレッド内でアプリケーションクラスを使用する必要があります。私IntentServiceで 私は、次のコードを持っている:スレッド内のアンドロイドアプリケーションクラス
public class AppLoader extends Application{
private AppLoader newApp;
public void onCreate()
{
super.onCreate();
}
public AppLoader getNewApp()
{
if(newApp == null)
newApp = new AppLoader();
return newApp;
}
iがjava.lang.NullPointerExceptionがを取得し、:これは私のアプリケーションである
public ConnectionThread (ResultReceiver receiver, Context context, AppLoader app)
{
this.receiver = receiver;
this.context = context;
this.activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
this.app = app;
}
@Override
public void run() {
Log.d("ConnectionThread","Starting Server Connection");
try {
while(isThereActivityRunning()) {
if(app.isInternetOn())
{
Log.d("ConnectionThread", app.getText());
results = sendGetMessage();
b.putString("results", results);
receiver.send(2, b);
}
:これは私のスレッドで
protected void onHandleIntent(Intent intent) {
final ResultReceiver receiver = intent.getParcelableExtra("receiver");
context = getBaseContext();
app = (AppLoader)getApplicationContext();
ConnectionThread thread = new ConnectionThread(receiver, context, app.getNewApp());
を私は理由を理解できません..
スタックトレースなしではお手伝いできません。 – WarrenFaith
例外には、通常、例外がどこで発生したかを示す行があります。スレッドを開始する前に 'getNewApp()'を呼び出すことは決してない場合、私の頭の上から、 'app'はnullになる可能性がありますが、それはあなたが提供したものに基づいて伝えるのは難しいです。 – DeeV
しかし、私はスレッドコンストラクタ内でgetNewAppを使用しました –