このプロジェクトにはデータベースに保存された番号 (433) があり、サーブレットを介してアクセスし、Android アプリに送信する必要があります。AsyncTask を追加する前は、アプリがサーブレットからデータ (433 である必要があります) を取得する場合と取得しない場合がありました。homePage ボタンをクリックすると、mainActivity 画面が表示され、データが表示されます。一貫して動作することを期待して AsyncTask を追加しましたが、今は "Light Data= " というテキストしか表示されませんが、データはありません ("Light Data= 433 と言うべきです)。サーブレットはデータベースに正常に接続するので、問題が内部にあることがわかります。アプリ. 私のプロジェクトに関連するコードを本当に感謝しています, ありがとう.
ホームページ:
package com.example.clearlight;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class HomePage extends Activity {
private Button ScheduleBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.homepage);
ScheduleBtn = (Button) findViewById(R.id.home_btn);
ScheduleBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent myIntent = new Intent(HomePage.this, MainActivity.class);
HomePage.this.startActivity(myIntent);
}
});
}
}
主な活動:
package com.example.clearlight;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
import android.widget.Toast;
import java.net.URL;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.StrictMode;
import android.util.Log;
public class MainActivity extends Activity {
TextView txt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.relative);
class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String result=null;
URL url = null;
DefaultHttpClient httpclient = null;
try {
String registrationUrl = "http://10.0.2.2/SensorInfo/GetLightData?sensor=light";
url = new URL(registrationUrl);
HttpGet getRequest = new HttpGet(registrationUrl);
ResponseHandler<String> handler = new BasicResponseHandler();
httpclient = new DefaultHttpClient();
// request data from server
result = httpclient.execute(getRequest, handler);
Log.d("MyApp", "Data from server is "+ result);
}
catch (Exception ex) {Log.e("error",ex.toString());
ex.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String result)
{
TextView text1 = (TextView)MainActivity.this.findViewById(R.id.text);
//Sets the new text to TextView (runtime click event)//*******
text1.setText("Light Data= " + result);
Toast.makeText(MainActivity.this, "Light Data:" + result, Toast.LENGTH_SHORT).show(); //MESSAGE BOX
}
}
}
}
マニフェスト:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.clearlight"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.clearlight.MainActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name="com.example.clearlight.HomePage"
android:label="@string/homepage"
android:parentActivityName="com.example.clearlight.MainActivity" >
<!-- Moved the intent filter to HomePage -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.clearlight.MainActivity" />
</activity>
</application>
</manifest>
ログキャット:
03-20 01:08:20.433: D/Launcher.Model(418): 構成変更時にアプリをリロードします。curr_mcc:310 prevmcc:0 03-20 01:08:20.473: E/StrictMode(401): 添付のスタック トレースでリソースが取得されましたが、解放されませんでした。リソース リークを回避する方法については、java.io.Closeable を参照してください。03-20 01:08:20.473: E/StrictMode(401): java.lang.Throwable: 明示的な終了メソッド 'close' は呼び出されません 03-20 01:08:20.473: E/StrictMode(401): dalvik.system で.CloseGuard.open(CloseGuard.java:184) 03-20 01:08:20.473: E/StrictMode(401): android.database.CursorWindow.(CursorWindow.java:137) 03-20 01:08:20.473: E/StrictMode(401): android.database.CursorWindow.(CursorWindow.java:41) 03-20 01:08:20.473: E/StrictMode(401): android.database.CursorWindow$1.createFromParcel(CursorWindow.java) :681) 03-20 01:08:20.473: E/StrictMode(401): android.database で。E/StrictMode(401): java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 03-20 01:08:20.473: E/StrictMode(401): java.lang.Thread.run で(Thread.java:856) 03-20 01:08:20.484: D/Launcher.Model(418): info=ShortcutInfo(title=Settingsintent=Intent { act=android.intent.action.MAIN のアイコン ビットマップを保存しますcat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.settings/.Settings }id=6 type=0 container=-100 screen=3 cellX=2 cellY=3 spanX=1 spanY=1 isGesture=false dropPos=null) 03-20 01:08:20.534: E/StrictMode(401): 添付のスタック トレースでリソースが取得されましたが、解放されませんでした。リソース リークを回避する方法については、java.io.Closeable を参照してください。03-20 01:08:20.534: E/StrictMode(401): java.lang.Throwable: 明示的な終了メソッド 'close' が呼び出されていません 03-20 01:08:20.534: E/StrictMode(401): 08:23.623: D/dalvikvm(637): DexOpt: ロード 310ms、verify+opt 1126ms、788740 バイト 03-20 01:08:23.833: D/EmailProvider(570): fromDatabase アカウント: 0 03-20 01:08: 23.844: D/EmailProvider(570): toDatabase トランザクションを終了します。copyCount = 0 03-20 01:08:23.873: D/EmailProvider(570): fromDatabase トランザクションの終了。copyCount = 0 03-20 01:08:24.653: I/Email(570): ワンタイム初期化: 完了しました。03-20 01:08:24.964: D/dalvikvm(163): GC_CONCURRENT 解放された 452K、47% 解放された 10034K/18887K、一時停止 33ms+15ms、合計 129ms 03-20 01:08:24.964: D/PackageManager(163): /data/app/com.example.clearlight-1.apk 03-20 01:08:25.804 にインストールされた新しいパッケージ: I/ActivityManager(163): パッケージ com.example.clearlight uid=10037 03-20 01 を強制停止: 08:25.954: W/ResourceType(418): 無効または循環中のバッグ 0x7f0d0017 を取得しようとしています。03-20 01:08:25.954: W/ResourceType(418): 無効または循環中のバッグ 0x7f0d0017 を取得しようとしています。03-20 01:08:25.954: W/ResourceType(418): 無効または循環中のバッグ 0x7f0d0017 を取得しようとしています。03-20 01:08:25.954: W/ResourceType(418): 無効または循環中のバッグ 0x7f0d0017 を取得しようとしています。03-20 01:08:25.954: W/ResourceType(418): 無効または循環中のバッグ 0x7f0d0017 を取得しようとしています。03-20 01:08:26.294: D/AlertService(401): 0 アクション = android.intent.action.PROVIDER_CHANGED 03-20 01:08:26.294: D/AlertService(401): updateAlertNotification の開始 03-20 01:08 :26.424: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされました 0ms 03-20 01:08:26.554: I/AccountTypeManager(501): 1 つのアカウント タイプのメタデータを読み込み、78ms (wall) 5ms (cpu) で 0 アカウント-20 01:08:26.604: I/Choreographer(418): 1623 フレームをスキップしました。アプリケーションがメイン スレッドで処理しすぎている可能性があります。03-20 01:08:26.735: D/PackageManager(163): generateServicesMap(android.accounts.AccountAuthenticator): 変更されていない 2 つのサービス 03-20 01:08:26.754: I/InputReader(163): 入力デバイスの再構成。changes=0x00000010 03-20 01:08:26.764: D/PackageManager(163): generateServicesMap(android.content.SyncAdapter): 4 つのサービスが変更されていません 03-20 01:08:26.764: D/BackupManagerService(163): ブロードキャスト インテントを受信しました{ act=android.intent.action.PACKAGE_ADDED dat=package:com.example.clearlight flg=0x8000010 (エクストラあり) } 03-20 01:08:26.984: D/gralloc_goldfish(418): GPU エミュレーションなしのエミュレーターが検出されました。03-20 01:08:26.994: V/BackupManagerService(163): addPackageParticipantsLocked: #1 03-20 01:08:27.124: W/InputMethodManagerService(163): システム IME にサブタイプが見つかりません: com.android.inputmethod。WAIT_FOR_CONCURRENT_GC がブロックされた 511ms 03-20 01:08:27.814: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされた 444ms 03-20 01:08:27.824: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされた 415ms 03-20 201:84: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされた 413 ミリ秒 03-20 01:08:27.834: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされた 372 ミリ秒 03-20 01:08:27.834: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされた 372 ミリ秒20 01:08:27.834: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされました 369ms 03-20 01:08:27.844: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされました 371ms 03-20 01:08:27.844: D/dalvikvm(163 ): WAIT_FOR_CONCURRENT_GC がブロックされた 369ms 03-20 01:08:27.844: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされた 327ms 03-20 01:08:27.844: D/dalvikvm(163): WAIT_FOR_CONCURRENT_GC がブロックされた 324ms 03:08:01 27.944: D/ExchangeService(587): !!! EAS 交換サービス、13% 空き 19091K/21895K、一時停止 20ms+19ms、合計 126ms 03-20 01:08:30.024: D/dalvikvm(277): WAIT_FOR_CONCURRENT_GC ブロック 107ms 03-20 01:08:30.504: D/AndroidRuntime(250): シャットダウンダウン VM 03-20 01:08:30.524: D/dalvikvm(250): GC_CONCURRENT 解放 97K、78% 解放 453K/2048K、一時停止 1ms+2ms、合計 15ms 03-20 01:08:30.524: D/jdwp(250 ): 選択 03-20 01:08:30.524: D/dalvikvm(250): デバッガーが切り離されました。オブジェクト レジストリには 1 つのエントリがありました 03-20 01:08:30.534: I/AndroidRuntime(250): 注: スレッド 'Binder_3' のアタッチに失敗しました 03-20 01:08:30.794: I/InputReader(163): 入力デバイスを再構成しています。changes=0x00000010 03-20 01:08:30.844: D/PackageManager(163): generateServicesMap(android.accounts.AccountAuthenticator): 変更されていない 2 つのサービス 03-20 01:08:30.864: I/InputReader(163): 入力デバイスの再構成. lib libjavacore.so 0x0 03-20 01:08:31.664 をロードしようとしています: D/dalvikvm(668): 共有ライブラリ libjavacore.so 0x0 03-20 01:08:31.734 を追加しました: D/dalvikvm(668): ロードしようとしていますlib libnativehelper.so 0x0 03-20 01:08:31.734: D/dalvikvm(668): 共有ライブラリを追加 libnativehelper.so 0x0 03-20 01:08:31.904: D/dalvikvm(163): GC_CONCURRENT 404K を解放、48%空き 10005K/18887K、一時停止 116ms+20ms、合計 388ms 03-20 01:08:32.254: D/dalvikvm(501): GC_CONCURRENT 解放 203K、4% 空き 8205K/8519K、一時停止 98ms+21ms、合計 963ms 03-20 01 :08:32.564: D/AlertService(401): 起動またはスケジュールされたアラートなし540ms 03-20 01:08:33.074: I/Choreographer(418): 1563 フレームをスキップしました! アプリケーションがメイン スレッドで処理しすぎている可能性があります。03-20 01:08:33.094: D/AndroidRuntime(668): D/dalvikvm(682): CheckJNI を遅延有効化していません (既にオンになっています) 03-20 01:08:33.635: I/ActivityManager(163): アクティビティ com.example.clearlight/.HomePage のプロシージャ com.example.clearlight を開始します: pid=682 uid=10037 gids={3003, 1028} 03-20 01:08:34.093: E/Trace(682): トレース ファイルを開く際のエラー: そのようなファイルまたはディレクトリはありません (2) 03-20 01:08:34.314 : I/ARMAssembler(35): 生成された scanline__00000077:03515104_00009001_00000000 [131 ipp] (153 ins) で [0x4124a8d0:0x4124ab34] で 736260 ns 03-20 01:08:34.754: Emoldfish8 emulation なしで D/gralloc_g が検出されました. 03-20 01:08:34.824: I/ActivityManager(163): 表示された com.example.clearlight/.HomePage: +1s253ms 03-20 01:08:35.484: I/ContactDirectoryManager(375): 7915ms で 0 件の連絡先ディレクトリを検出03-20 01:08:35.484: I/Launcher(418): setLoadOnResume 03-20 01:08:35.564: I/Launcher(418): setLoadOnResume 03-20 01: アプリケーションがメイン スレッドで処理しすぎている可能性があります。03-20 01:08:37.373: E/WVMExtractor(38): libwvm.so を開けませんでしたLauncher(418): setLoadOnResume 03-20 01:08:38.543: E/WVMExtractor(38): libwvm.so 03-20 01:08:38.603: E/MetadataRetrieverClient(38): アルバム アートの抽出に失敗しました03-20 01:08:39.003: D/dalvikvm(375): GC_CONCURRENT 解放された 387K、6% 解放された 8414K/8903K、一時停止 31ms+5ms、合計 110ms 03-20 01:08:39.263: I/ContactsDatabaseHelper(375):ロケールの変更は 3621ms で完了 03-20 01:08:39.263: I/ContactsDatabaseHelper(375): ロケール en_US への切り替え 03-20 01:08:39.763: I/ContactsDatabaseHelper(375): ロケールの変更は 501ms で完了 03-20 01 :08:39.773: I/ContactsProvider(375): 集約アルゴリズムのアップグレード 03-20 01:08:39.803: